HttpClientがhttpsを訪問してきます。
3905 ワード
一、まずhttp契約を理解する。
1.socket. GET要求
SSL/TLSプロトコルを説明する
まず次のHttpClientに来ます。
1.3.0のHttpClientを探しましたが、4の感じはまだ使えません。とりあえずこのようにしましょう。
2.基本的なget用法効果
1.通常のhttpにアクセスできるようになりました。
ちょっとhttps://github.com/ なんと200にも戻りました。この下に解决します。
2.上記のようなhttpsアクセスは直接異常です。
3.httpclient訪問
三、証明書の
証明書の原理
証明書チェーン
最終的には証明書は第三者公認の機関で買いに行きます。
実際のところを知る
SSLSOcketの使用
四、使用する
認証にアクセスするだけでなく
クロスドメイン転送にも使用できます。
1.socket. GET要求
Socket socket = new Socket("www.baidu.com", 80);
//
OutputStream out = socket.getOutputStream();
PrintWriter pw = new PrintWriter(out);
pw.println("GET / HTTP/1.1"); // Request-Line,
pw.println("Host: www.baidu.com"); // ,Host
pw.println("User-Agent: Mozilla/5.0 (Windows NT 6.1; IE 9.0)"); //
//
//pw.println("Content-Type: application/x-www-form-urlencoded");
pw.println();//
pw.flush(); //
//
InputStream is = socket.getInputStream();
InputStreamReader reader = new InputStreamReader(is);
//
while (true) {
System.out.print((char)reader.read());
}
2.socket POSTの時のパラメータはこれはまだ確定していません。pw.println("Content-Type: application/x-www-form-urlencoded");
pw.println("Content-Length: length
pw.println();
pw.println("---------------"); //
3.SSL/TLS HTTPSSSL/TLSプロトコルを説明する
//
X509TrustManager xtm = new DefaultTrustManager();
TrustManager mytm[] = { xtm };
//
SSLContext ctx = SSLContext.getInstance("SSL");
//
ctx.init(null, mytm, null);
//
SSLSocketFactory factory = ctx.getSocketFactory();
// Socket
// String url="https://kyfw.12306.cn/otn/leftTicket/init";
Socket socket = factory.createSocket("kyfw.12306.cn", 443);
// Socket
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.write("GET /otn/leftTicket/init HTTP/1.1\r
");
out.write("Host: kyfw.12306.cn\r
"); // ,Host
out.write("User-Agent: Mozilla/5.0 (Windows NT 6.1; IE 9.0)\r
"); //
out.write("\r
");
out.flush();
System.out.println("start work!");
String line;
StringBuffer sb = new StringBuffer();
while ((line = in.readLine()) != null) {
sb.append(line + "
");
}
out.close();
in.close();
System.out.println(sb.toString());
まず次のHttpClientに来ます。
1.3.0のHttpClientを探しましたが、4の感じはまだ使えません。とりあえずこのようにしましょう。
2.基本的なget用法効果
public static void main(String[] args) {
HttpClient client=new HttpClient();
int result=0;
try {
// GetMethod get=new GetMethod("http://www.baidu.com");
// int result=client.executeMethod(get);
// System.out.println(" :"+result);
GetMethod get=new GetMethod("https://kyfw.12306.cn/otn/leftTicket/init");
result=client.executeMethod(get);
System.out.println(" :"+result);
} catch (IOException e) {
e.printStackTrace();
}
この中には大体二つの問題があります。1.通常のhttpにアクセスできるようになりました。
ちょっとhttps://github.com/ なんと200にも戻りました。この下に解决します。
2.上記のようなhttpsアクセスは直接異常です。
3.httpclient訪問
三、証明書の
証明書の原理
証明書チェーン
最終的には証明書は第三者公認の機関で買いに行きます。
実際のところを知る
//
class DefaultTrustManager implements X509TrustManager{
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return null;
}
X509Certificate
,
SSLSOcketの使用
四、使用する
認証にアクセスするだけでなく
クロスドメイン転送にも使用できます。