Shane wrote:
I am trying to write a basic https client. It will contact an https
site, post authentication details, follow some links, and retrieve some
information. This all seems like I am reinventing the wheel, but I am
struggling to find example code.
An example is attached below.
Arne
==============================================
import java.net.*;
import java.io.*;
import java.security.*;
import java.security.cert.*;
import javax.net.ssl.*;
public class HttpsGetAuth {
public static void main(String[] args) {
try {
SSLContext sslctx = SSLContext.getInstance("SSL");
sslctx.init(null, new X509TrustManager[] { new
MyTrustManager() }, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslctx.getSocketFactory());
//HttpsURLConnection.setDefaultHostnameVerifier(new
MyHostnameVerifier());
Authenticator.setDefault(new MyAuthenticator());
URL url = new URL("https://www.xxxx.dk/prot4.html");
HttpsURLConnection con = (HttpsURLConnection)
url.openConnection();
if (con.getResponseCode() == HttpsURLConnection.HTTP_OK) {
InputStream is = con.getInputStream();
OutputStream os = new FileOutputStream("C:\\z.z");
byte[] b = new byte[1000];
int n;
while ((n = is.read(b)) >= 0) {
os.write(b, 0, n);
}
os.close();
is.close();
}
con.disconnect();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class MyTrustManager implements X509TrustManager
{
public void checkClientTrusted(X509Certificate[] chain, String
authType) {
}
public void checkServerTrusted(X509Certificate[] chain, String
authType) {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
//class MyHostnameVerifier implements HostnameVerifier {
// public boolean verify(String urlHostName, SSLSession session) {
// return true;
// }
//}
class MyAuthenticator extends Authenticator {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("xxxx", "xxxx".toCharArray());
}
}