安卓開發之網路請求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;
}
}
相關文章
- Android探索之HttpURLConnection網路請求AndroidHTTP
- Android HTTP協議請求網路(三)之HttpURLConnection方式AndroidHTTP協議
- 網路請求優化之取消請求優化
- Flutter開發系列教程之網路請求Flutter
- Android okHttp網路請求之Get/Post請求AndroidHTTP
- flutter之從零開始搭建(三)之 網路請求Flutter
- 小程式系列之網路請求
- Vue 入門之網路請求Vue
- 網路請求發展介紹
- Android網路請求(終) 網路請求框架RetrofitAndroid框架
- Android網路請求(3) 網路請求框架OkHttpAndroid框架HTTP
- Retrofit原始碼解析之網路請求原始碼
- Android網路請求(4) 網路請求框架VolleyAndroid框架
- iOS開發——從網路請求照片的兩種方法iOS
- 網路請求了
- Volley 原始碼解析之網路請求原始碼
- iOS 網路請求之multipart/form-dataiOSORM
- HTTP網路請求原理HTTP
- iOS原生網路請求iOS
- 網路請求圖片
- 網路請求LCNetwork
- 網路資料請求
- 初探計算機網路之HTTPS請求計算機網路HTTP
- Cocos2dx之http網路請求HTTP
- Android okHttp網路請求之Json解析AndroidHTTPJSON
- Nuxt3實戰系列之網路請求篇UX
- 微信小程式之網路請求簡單封裝微信小程式封裝
- 網路請求框架之Retrofit2.0基本講解框架
- Jest中Mock網路請求Mock
- OC:封裝網路請求封裝
- iOS 使用Moya網路請求iOS
- Android網路請求(2)Android
- RxJava + Retrofit完成網路請求RxJava
- iOS網路請求穿值iOS
- 網路請求框架對比框架
- Android Http請求框架二:xUtils 框架網路請求AndroidHTTP框架
- iOS開發·網路請求大總結(NSURLConnection,NSURLSession,AFNetworking)iOSSession
- Android 網路框架之OKhttp實現https請求Android框架HTTP