一.繼承關系
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
);
//是否輸入參數
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();