一.繼承關系 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.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(); int count=conn.getContentLength();//獲取遠程資源長度 byte[] buffer = new byte[count]; 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();
一.繼承關系
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.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();
int count=conn.getContentLength();//獲取遠程資源長度
byte[] buffer = newbyte[count];
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();