您的位置:首页 > 理论基础 > 计算机网络

使用HttpsURLConnection发送POST请求

2015-04-25 16:58 537 查看
重写X509TrustManager

1 private static TrustManager myX509TrustManager = new X509TrustManager() {
2
3     @Override
4     public X509Certificate[] getAcceptedIssuers() {
5         return null;
6     }
7
8     @Override
9     public void checkServerTrusted(X509Certificate[] chain, String authType)
10     throws CertificateException {
11     }
12
13     @Override
14     public void checkClientTrusted(X509Certificate[] chain, String authType)
15     throws CertificateException {
16     }
17 };


1 static public String SendHttpsPOST(String url, List<NameValuePair> param, String data)
2 {
3         String result = null;
4
5
6         //使用此工具可以将键值对编码成"Key=Value&Key2=Value2&Key3=Value3”形式的请求参数
7         String requestParam = URLEncodedUtils.format(param, "UTF-8");
8         try {
9             //设置SSLContext
10             SSLContext sslcontext = SSLContext.getInstance("TLS");
11             sslcontext.init(null, new TrustManager[]{myX509TrustManager}, null);
12
13             //打开连接
14         //要发送的POST请求url?Key=Value&Key2=Value2&Key3=Value3的形式
15            URL requestUrl = new URL(url + "?" + requestParam);
16            HttpsURLConnection httpsConn = (HttpsURLConnection)requestUrl.openConnection();
17
18             //设置套接工厂
19             httpsConn.setSSLSocketFactory(sslcontext.getSocketFactory());
20
21             //加入数据
22             httpsConn.setRequestMethod("POST");
23             httpsConn.setDoOutput(true);
24             DataOutputStream out = new DataOutputStream(
25                     httpsConn.getOutputStream());
26             if (data != null)
27                 out.writeBytes(data);
28
29             out.flush();
30             out.close();
31
32             //获取输入流
33             BufferedReader in = new BufferedReader(new InputStreamReader(httpsConn.getInputStream()));
34             int code = httpsConn.getResponseCode();
35             if (HttpsURLConnection.HTTP_OK == code){
36                 String temp = in.readLine();
37                 /*连接成一个字符串*/
38                 while (temp != null) {
39                     if (result != null)
40                         result += temp;
41                     else
42                         result = temp;
43                     temp = in.readLine();
44                 }
45             }
46         } catch (KeyManagementException e) {
47             e.printStackTrace();
48         } catch (NoSuchAlgorithmException e) {
49             e.printStackTrace();
50         } catch (MalformedURLException e) {
51             e.printStackTrace();
52         } catch (ProtocolException e) {
53             e.printStackTrace();
54         } catch (IOException e) {
55             e.printStackTrace();
56         }
57
58         return result;
59 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: