Hbuilder MUI里面使用java.net.URL发送网络请求,操作cookie
生活随笔
收集整理的這篇文章主要介紹了
Hbuilder MUI里面使用java.net.URL发送网络请求,操作cookie
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 引入所需網絡請求類:
var URL = plus.android.importClass("java.net.URL");var URLConnection = plus.android.importClass("java.net.URLConnection");var BufferedReader = plus.android.importClass("java.io.BufferedReader");var InputStreamReader = plus.android.importClass("java.io.InputStreamReader");var StrictMode = plus.android.importClass("android.os.StrictMode");2.?忽略Android3.0開始強制程序不能在主線程中訪問網絡的強制策略
//以下兩句必加,不然會請求不了網絡,原因://android3.0版本開始就強制程序不能在主線程中訪問網絡,要把訪問網絡放在獨立的線程中。//以下兩句可以忽略這些強制策略。var policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);3. 使用URL進行網絡請求
var httpConn = new URL("https://login.10086.cn/captchazh.htm?type=05×tamp=" + nowtime).openConnection();// 設置通用屬性httpConn.setRequestProperty("Accept", "*/*");httpConn.setRequestProperty("Content-Type", "image/jpeg");httpConn.setRequestProperty("Connection", "Keep-Alive");//設置Cookie//httpConn.setRequestProperty("Cookie", cookies);httpConn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");// 建立實際的連接httpConn.connect();4. 獲取請求頭和Set-Cookie以及返回的數據:
// 響應頭部獲取var htmlHeads = [];var cookies = "";//取cookiefor (var i = 1; i < 100; i++) {var key_ = httpConn.getHeaderFieldKey(i);if (key_ == null){console.log("--------------------------------"+cookies);break;}else{htmlHeads.push(key_ + ':' +httpConn.getHeaderField(i));if(key_ == "Set-Cookie") {var cookie = httpConn.getHeaderField(i);cookies += cookie.substring(0, cookie.indexOf(";")+1);}}}//----------------獲取輸出 start----------------//var reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "UTF-8"));var lines;//輸出數據var response = "";while ((lines = reader.readLine()) != null) {response += lines;}reader.close();//----------------獲取輸出 end----------------//?
完整例子:
function gocook() {var nowtime = (new Date).getTime();var URL = plus.android.importClass("java.net.URL");var URLConnection = plus.android.importClass("java.net.URLConnection");var BufferedReader = plus.android.importClass("java.io.BufferedReader");var InputStreamReader = plus.android.importClass("java.io.InputStreamReader");var StrictMode = plus.android.importClass("android.os.StrictMode");//以下兩句必加,不然會請求不了網絡,原因://android3.0版本開始就強制程序不能在主線程中訪問網絡,要把訪問網絡放在獨立的線程中。//以下兩句可以忽略這些強制策略。var policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);var httpConn = new URL("https://login.10086.cn/captchazh.htm?type=05×tamp=" + nowtime).openConnection();// 設置通用屬性httpConn.setRequestProperty("Accept", "*/*");httpConn.setRequestProperty("Content-Type", "image/jpeg");httpConn.setRequestProperty("Connection", "Keep-Alive");//設置Cookie//httpConn.setRequestProperty("Cookie", cookies);httpConn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");// 建立實際的連接httpConn.connect();// 響應頭部獲取var htmlHeads = [];var cookies = "";//取cookiefor (var i = 1; i < 100; i++) {var key_ = httpConn.getHeaderFieldKey(i);if (key_ == null){console.log("--------------------------------"+cookies);break;}else{htmlHeads.push(key_ + ':' +httpConn.getHeaderField(i));if(key_ == "Set-Cookie") {var cookie = httpConn.getHeaderField(i);cookies += cookie.substring(0, cookie.indexOf(";")+1);}}}//----------------獲取輸出 start----------------//var reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "UTF-8"));var lines;//輸出數據var response = "";while ((lines = reader.readLine()) != null) {response += lines;}reader.close();//----------------獲取輸出 end----------------//}?
總結
以上是生活随笔為你收集整理的Hbuilder MUI里面使用java.net.URL发送网络请求,操作cookie的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 报告称企业部署Windows 10比此前
- 下一篇: Myeclipse报错--Animati