通过java.net.URLConnection发送HTTP请求的方法
生活随笔
收集整理的這篇文章主要介紹了
通过java.net.URLConnection发送HTTP请求的方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
1、GET與POST請求的區(qū)別
? a) get請求可以獲取靜態(tài)頁面,也可以把參數放在URL字串后面,傳遞給servlet,?
? b) post與get的不同之處在于post的參數不是放在URL字串里面,而是放在http請求的正文內。?
2、URLConnection的對象
? a) 獲取URLConnection實例
URL?url?=?new?URL(urlString); //?根據url生成urlConnection對象 urlConnection?=?(HttpURLConnection)?url.openConnection();??b) 常見參數設置
//?設置是否向httpUrlConnection輸出,因為這個是post請求,參數要放在? //?http正文內,因此需要設為true,?默認情況下是false;? httpUrlConnection.setDoOutput(true);?//?設置是否從httpUrlConnection讀入,默認情況下是true;? httpUrlConnection.setDoInput(true);?//?Post?請求不能使用緩存? httpUrlConnection.setUseCaches(false);?//?設定傳送的內容類型是可序列化的java對象? //?(如果不設此項,在傳送序列化對象時,當WEB服務默認的不是這種類型時可能拋java.io.EOFException)? httpUrlConnection.setRequestProperty("Content-type",?"application/x-java-serialized-object");?//?設定請求的方法為"POST",默認是GET? httpUrlConnection.setRequestMethod("POST");//設置超時(timeout),在網絡異常的情況下,可能會導致程序僵死而不繼續(xù)往下執(zhí)行。 System.setProperty("sun.net.client.defaultConnectTimeout",?超時毫秒數字符串); System.setProperty("sun.net.client.defaultReadTimeout",?超時毫秒數字符串);? c)?HttpURLConnection寫數據與發(fā)送數據問題
//?現(xiàn)在通過輸出流對象構建對象輸出流對象,以實現(xiàn)輸出可序列化的對象。? OutputStream?outStrm?=?httpUrlConnection.getOutputStream();? ObjectOutputStream?objOutputStrm?=?new?ObjectOutputStream(outStrm);?//?向對象輸出流寫出數據,這些數據將存到內存緩沖區(qū)中? objOutputStrm.writeObject(new?String("我是測試數據"));?//?刷新對象輸出流,將任何字節(jié)都寫入潛在的流中(些處為ObjectOutputStream)? objOutputStm.flush();?//?關閉流對象。此時,不能再向對象輸出流寫入任何數據,先前寫入的數據存在于內存緩沖區(qū)中,? //?在調用下邊的getInputStream()函數時才把準備好的http請求正式發(fā)送到服務器? objOutputStm.close();?//?調用HttpURLConnection連接對象的getInputStream()函數,? //?將內存緩沖區(qū)中封裝好的完整的HTTP請求電文發(fā)送到服務端。? InputStream?inStrm?=?httpConn.getInputStream();?//?<===注意,實際發(fā)送請求的代碼段就在這里?//?上邊的httpConn.getInputStream()方法已調用,本次HTTP請求已結束,下邊向對象輸出流的輸出已無意義//?既使對象輸出流沒有調用close()方法,下邊的操作也不會向對象輸出流寫入任何數據.? //?因此,要重新發(fā)送數據時需要重新創(chuàng)建連接、重新設參數、重新創(chuàng)建流對象、重新寫數據、? //?重新發(fā)送數據(至于是否不用重新這些操作需要再研究)? objOutputStm.writeObject(new?String(""));? httpConn.getInputStream();3、代碼實例
轉載于:https://my.oschina.net/u/1425545/blog/493276
總結
以上是生活随笔為你收集整理的通过java.net.URLConnection发送HTTP请求的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 4983 Goffi and G
- 下一篇: Genymotion如何访问本地服务器?