安卓開發之網路請求HttpURLConnection
一、相關API
URL:包含請求地址的類
- URL(path):包含請求地址的構造方法
- openConnection():得到與伺服器連線的物件
HttpURLConnection:代表與伺服器連線的類
準備工作:
- setRequestMethod(“GET”) / setRequestMethod(“POST”):設定請求方式,預設方式為”GET”
- setConnectTimeout(time):設定連線超時時間,單位ms
- setReadTimeout(time):設定讀取伺服器返回資料的時間,單位ms
URL 連線是否可用於輸入和/或輸出(使用了連線的..流就設定..為true) - setDoOutput(boolean) // 預設為false
setDoInput(boolean) // 預設為true
//設定讀取/下載的起始位置
String sProperty =”bytes=”+ startP + “-“+endP;
.setRequestProperty(“Range”,sProperty);
開始連線伺服器:
- connect():開始連線伺服器
請求工作:
- int getResponseCode():得到伺服器返回的結果碼
int getContentLength():得到伺服器返回的資料長度(位元組),常用於下載進度的顯示。
getOutputStream():返回一個指向伺服器端的資料輸出流
- getInputStream():返回一個從伺服器返回的資料輸入流
斷開連線:
- disconnect():斷開連線
二、使用HttpURLConnection提交GET請求
//在分執行緒進行網路請求
new Thread(){
public void run(){
//UTF-8
String path = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm"+
"?tel=00012345678";
try {
//建立URL物件
URL url = new URL(path);
//得到HttpURLConnection物件
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//連線準備
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(6000);
//開始連線伺服器
connection.connect();
//帶資料來請求資料
if(connection.getResponseCode() == 200){
//200:代表請求OK
InputStream is = connection.getInputStream();
//將InputStream轉化為String
String result = HttpUtil.inputstream2String(is);
System.out.println(result);
//關閉輸入流
is.close();
//獲取到資料後在主執行緒更新UI runOnUiThread / handler
}
connection.disconnect();
}catch(Exception e){
}
}
}.start();
三、使用HttpURLConnection提交POST請求
可以在其它api上測試POST請求。
//在分執行緒進行網路請求
new Thread(){
public void run(){
String path = "http://www.kd185.com/ems.php";
try {
//建立URL物件
URL url = new URL(path);
//得到HttpURLConnection物件
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//連線準備
connection.setRequestMethod("POST");
connection.setConnectTimeout(5000);
connection.setReadTimeout(6000);
//設定連線是否可以用於輸入/輸出
connection.setDoOutput(true);
//開始連線伺服器
connection.connect();
//傳送請求的資料:連線後得到輸出流
OutputStream os = connection.getOutputStream();
String data = "wen=5011363267500&btnSearch=EMS快遞查詢";
//將請求資料的字串轉換為byte陣列
os.write(data.getBytes("utf-8"));
//關閉輸出流
os.flush();
os.close();
//帶資料來請求資料
if(connection.getResponseCode() == 200){
//200:代表請求OK
InputStream is = connection.getInputStream();
//將InputStream轉化為String (在此不贅述)
String result = HttpUtil.inputstream2String(is);
System.out.println(result);
//關閉輸入流
is.close();
//在主執行緒更新UI runOnUiThread / handler
}
connection.disconnect();
}catch(Exception e){
}
}
}.start();
附 HttpUtil程式碼:
public class HttpUtil {
public static String inputstream2String(InputStream is) throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while((len=is.read(buffer))!=-1){
baos.write(buffer,0,len);
}
String result = baos.toString();
return result;
}
}
相關文章
- 網路請求優化之取消請求優化
- Flutter開發系列教程之網路請求Flutter
- flutter之從零開始搭建(三)之 網路請求Flutter
- Vue 入門之網路請求Vue
- 小程式系列之網路請求
- Android網路請求(4) 網路請求框架VolleyAndroid框架
- Android網路請求(終) 網路請求框架RetrofitAndroid框架
- Android網路請求(3) 網路請求框架OkHttpAndroid框架HTTP
- 網路請求發展介紹
- Retrofit原始碼解析之網路請求原始碼
- Volley 原始碼解析之網路請求原始碼
- 網路請求了
- 初探計算機網路之HTTPS請求計算機網路HTTP
- 安卓中高階開發工程師之——未來的路安卓工程師
- iOS開發·網路請求大總結(NSURLConnection,NSURLSession,AFNetworking)iOSSession
- Fiddler-抓取安卓手機APP請求地址安卓APP
- HTTP網路請求原理HTTP
- 網路資料請求
- Android網路請求(2)Android
- 安卓開發之呼叫攝像頭安卓
- 安卓okhttp3進行網路請求,一個簡單的登入頁面的實現安卓HTTP
- HttpURLConnection 實戰Get/Post 請求並且儲存PDF檔案HTTP
- Nuxt3實戰系列之網路請求篇UX
- OC:封裝網路請求封裝
- iOS 使用Moya網路請求iOS
- Jest中Mock網路請求Mock
- 小程式的填坑小技巧之網路請求改造
- 爬蟲中網路請求的那些事之urllib庫爬蟲
- OKHttp網路請求原理流程解析HTTP
- Retrofit網路請求原始碼解析原始碼
- Flutter 網路請求框架封裝Flutter框架封裝
- 【UniApp】-uni-app-網路請求APP
- WKWebView 網路請求Header 丟失WebViewHeader
- 使用retrofit進行網路請求
- 小程式-網路請求封裝封裝
- Flutter 網路請求 Dio 封裝Flutter封裝
- 十. Axios網路請求封裝iOS封裝
- 安卓微信小程式開發之“藍芽”安卓微信小程式藍芽
- Chrome開發者工具關於網路請求的一個隱藏技能Chrome