馬上加入Android 台灣中文網,立即免費下載應用遊戲。
您需要 登錄 才可以下載或查看,沒有帳號?註冊
x
Https與Http類似,只不過Https一般是通過post請求服務器,但是Https與http不同的是Https與服務器會話是處於連接狀態。http則發送請求後連接就會斷開。
發送post請求代碼:- String query = r4 + "&pass=" + r3; //請求參數
- byte[] entitydata = query.getBytes();//得到實體數據
- HttpsURLConnection urlCon = (new URL(ticketurl)).openConnection();
- urlCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
- urlCon.setRequestProperty("Content-Length", String.valueOf(entitydata.length));
- ((HttpsURLConnection) urlCon).setRequestMethod("POST");
- urlCon.setDoOutput(true);
- urlCon.setDoInput(true);
- urlCon.connect();
- //把封裝好的實體數據發送到輸出流
- OutputStream outStream = urlCon.getOutputStream();
- outStream.write(entitydata);
- outStream.flush();
- outStream.close();
- //服務器返回輸入流並讀寫
- BufferedReader in = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
- String line;
- while ((line = in.readLine()) != null) {
- return line;
- }
- in.close();
複製代碼 另外使用HttpsURLConnection時需要實現HostnameVerifier 和 X509TrustManager,這兩個實現是必須的,要不會報安全驗證異常。然後初始化X509TrustManager中的SSLContext,為javax.net.ssl.HttpsURLConnection設定默認的SocketFactory和HostnameVerifier。代碼如下:- private myX509TrustManager xtm = new myX509TrustManager();
- private myHostnameVerifier hnv = new myHostnameVerifier();
-
- public HttpsURLConnectionTest() {
-
- //初始化X509TrustManager中的SSLContext
- SSLContext sslContext = null;
- try {
- sslContext = SSLContext.getInstance("TLS");
- X509TrustManager[] xtmArray = new X509TrustManager[] { xtm };
- sslContext.init(null, xtmArray, new java.security.SecureRandom());
- } catch (GeneralSecurityException gse) {
-
- }
- //為javax.net.ssl.HttpsURLConnection設定默認的SocketFactory和HostnameVerifier
- if (sslContext != null) {
- HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
- }
- HttpsURLConnection.setDefaultHostnameVerifier(hnv);
複製代碼 這樣就不會報錯了。 |