HttpURLConnection 用法詳解


一.繼承關系

   1.  java.lang.Object
          --java.net.URLConnection
               --java.net.HttpURLConnection
二.URLConnection類
  1.URLConnection代表應用程序和 URL 之間的通信鏈接。
  2.作用:代表應用程序和 URL 之間的通信鏈接;
  3. 創建一個到 URL 的連接需要幾個步驟:
   (1)通過在 URL 上調用  openConnection 方法創建連接對象;
   (2)處理設置參數和一般請求屬性;
   (3)使用  connect 方法建立到遠程對象的實際連接;
   (4)遠程對象變為可用。遠程對象的頭字段和內容變為可訪問;
三.HttpURLConnection
  1 每個 HttpURLConnection 實例都可用於生成單個請求,但是其他實例可以透明地共享連接到 HTTP 服務器的基礎網絡。請求后在 HttpURLConnection 的 InputStream 或 OutputStream 上調用 close() 方法可以釋放與此實例關聯的網絡資源,但對共享的持久連接沒有任何影響。如果在調用 disconnect() 時持久連接空閑,則可能關閉基礎套接字;
  2. 對於Connection的對象的設置很重要,是有順序的;
     connection的設置(很多set函數)必須在函數執行之前完成;Outputstream的寫操作必須在Inputstream讀操作之前。
四.用法
     1.創建連接:
     URL url = new URL("http://localhost:8080/TestHttpURLConnectionPro/index.jsp"); 
     HttpURLConnection conn = ( HttpURLConnection) url.openConnection();

  2.設置Connection參數:

      conn.setRequestMethod(  "POST" );         // 提交模式
 conn.setRequestProperty(  "Content-Type" ,  "application/json;charset=UTF-8"  );               //設置請求屬性
     conn.setRequestProperty(  "User-Agent" "Autoyol_gpsCenter"  );
     conn.setConnectTimeout(100000);  //連接超時 單位毫秒
     conn.setReadTimeout(100000);     //讀取超時 單位毫秒
     conn.setDoOutput(  true );          //是否輸入參數
     conn.setDoInput(  true );        //是否讀取參數
    3.連接:
     conn.connect();
   4.獲取寫數據流:
     OutputStream outStrm = httpUrlConnection.getOutputStream();
   5.寫數據:
     outStrm .write(bytes);  // 輸入參數
     outStrm. flush();
     outStrm.close();
   6.讀數據:
     InputStream in = conn.getInputStream();
     byte [] buffer =  new   byte [521];
     ByteArrayOutputStream baos =  new  ByteArrayOutputStream();
     for  (  int  len = 0; (len = in.read(buffer)) > 0;) {
          baos.write(buffer, 0, len);
     }
     String returnValue =  new  String(baos.toByteArray(),  "utf-8"  );
     reg= JSON. parseObject(returnValue, ReturnMessage. class  );
     baos.flush();
     baos.close();
     in.close();
     conn.disconnect();
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM