使用Java發送GET、POST請求
——節選自《瘋狂Java講義》
URL的openConnection()方法将傳回一個URLConnection對象,該對象表示應用程式和 URL 之間的通信連結。程式可以通過URLConnection執行個體向該URL發送請求、讀取URL引用的資源。
通常建立一個和 URL 的連接配接,并發送請求、讀取此 URL 引用的資源需要如下幾個步驟:
(1)通過調用URL對象openConnection()方法來建立URLConnection對象。
(2)設定URLConnection的參數和普通請求屬性。
(3)如果隻是發送GET方式請求,使用connect方法建立和遠端資源之間的實際連接配接即可;如果需要發送POST方式的請求,需要擷取URLConnection執行個體對應的輸出流來發送請求參數。
(4)遠端資源變為可用,程式可以通路遠端資源的頭字段、或通過輸入流讀取遠端資源的資料。
在建立和遠端資源的實際連接配接之前,程式可以通過如下方法來設定請求頭字段:
setAllowUserInteraction:設定該URLConnection的allowUserInteraction請求頭字段的值。
setDoInput:設定該URLConnection的doInput請求頭字段的值。
setDoOutput:設定該URLConnection的doOutput請求頭字段的值。
setIfModifiedSince:設定該URLConnection的ifModifiedSince請求頭字段的值。
setUseCaches:設定該URLConnection的useCaches請求頭字段的值。
除此之外,還可以使用如下方法來設定、或增加通用頭字段:
setRequestProperty(String key, String value):設定該URLConnection的key請求頭字段的值為value。如下代碼所示:
conn.setRequestProperty("accept" , "*/*")
addRequestProperty(String key, String value):為該URLConnection的key請求頭字段的增加value值,該方法并不會覆寫原請求頭字段的值,而是将新值追加到原請求頭字段中。
當遠端資源可用之後,程式可以使用以下方法用于通路頭字段和内容:
Object getContent():擷取該URLConnection的内容。
String getHeaderField(String name):擷取指定響應頭字段的值。
getInputStream():傳回該URLConnection對應的輸入流,用于擷取URLConnection響應的内容。
getOutputStream():傳回該URLConnection對應的輸出流,用于向URLConnection發送請求參數。
注意:如果既要使用輸入流讀取URLConnection響應的内容,也要使用輸出流發送請求參數,一定要先使用輸出流,再使用輸入流。
getHeaderField方法用于根據響應頭字段來傳回對應的值。而某些頭字段由于經常需要通路