UrlConnection請求網路資料
阿新 • • 發佈:2018-11-19
1.Get請求
try { //1 定義 URL 地址 URL url = new URL(地址 + 傳過來的引數); //ctrl + h 檢視類的繼承結構 //ctrl + q 檢視方法資訊 //2 開啟連線 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //3 設定:請求方法;超時 //請求 方法 GET POST urlConnection.setRequestMethod("GET"); //超時設定 //讀取超時 urlConnection.setReadTimeout(5000); //連線超時 urlConnection.setConnectTimeout(5000); //4 連線並獲取狀態碼 ////////////////////////////////// int responseCode = urlConnection.getResponseCode(); if (responseCode == 200) { //5 讀取位元組流轉換成字串結果 String result = stream2String(urlConnection.getInputStream()); //操作ui 子執行緒不要操作ui Message message = mHandler.obtainMessage(UPDATE_UI, result); //Message msg = new Message(); mHandler.sendMessage(message); //info.setText(result); } else { Message message = mHandler.obtainMessage(UPDATE_UI, "error: " + responseCode); //info.setText("error: " + responseCode); mHandler.sendMessage(message); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //將位元組流轉換成字元 private String stream2String(InputStream is) throws IOException { InputStreamReader isr = new InputStreamReader(is, "gbk");//"gbk"是解析碼 BufferedReader br = new BufferedReader(isr); StringBuilder stringBuilder = new StringBuilder(); for (String tmp = br.readLine(); tmp != null; tmp = br.readLine()) { stringBuilder.append(tmp); } return stringBuilder.toString();
}
2.Post請求
try { //1 url URL url = new URL(地址); //2 開啟連線 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //3 請求方式 urlConnection.setRequestMethod("POST"); //超時 urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); //標識需要輸出引數 urlConnection.setDoOutput(true); //輸出引數: tel=xxxxxxxxx String params = "tel=" + 傳過來的引數; urlConnection.getOutputStream().write(params.getBytes()); urlConnection.getOutputStream().flush(); //獲取結果 //狀態碼 int responseCode = urlConnection.getResponseCode(); String result; if (responseCode == 200) {//請求成功 result = stream2String(urlConnection.getInputStream(), "gbk"); } else {//沒有請求成功 result = "error: " + responseCode; } //更新 ui mHandler.sendMessage(mHandler.obtainMessage(UPDATE_UI, result)); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //將位元組流轉換為字元流 private String stream2String(InputStream is, String cs) throws IOException { StringBuilder stringBuilder = new StringBuilder(); InputStreamReader isr = new InputStreamReader(is, cs); BufferedReader br = new BufferedReader(isr); for (String tmp = br.readLine(); tmp != null; tmp = br.readLine()) { stringBuilder.append(tmp); } return stringBuilder.toString(); }