1. 程式人生 > >UrlConnection請求網路資料

UrlConnection請求網路資料

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();
    }