今天寫了一段代碼想在service里訪問一個外部網站,在service的方法里寫了如下代碼
System.setProperty("http.proxyType", "4"); System.setProperty("http.proxyPort", port); System.setProperty("http.proxyHost", host); System.setProperty("http.proxySet", "true"); URL url = new URL(hurl); HttpURLConnection con = (HttpURLConnection)url.openConnection(); con.setConnectTimeout(100000); con.connect(); int state = con.getResponseCode();
結果一直報連接超時,后來將設置代理的代碼移動到control層后就可以正常訪問了,不知是何原因,這里做個記錄。
還有在用上面的代碼測試訪問中國天氣網的上海天氣預報的頁面時,我把url加了些字符讓它變成錯誤的url發現程序返回的狀態碼依然是200,而用瀏覽器訪問則有如下情況:
用google瀏覽器監測了一下發現總共發出了2個網頁請求,第一個請求是我主動發起的,返回的結果是302,然后客戶端又主動訪問了服務器的404頁面???
如果是這樣的話java代碼應該是獲取到302狀態碼的那個頁面,但是實際實際讀取網頁的流后發現是后面這個404頁面,這是一個很奇怪的問題。
如果是服務器端的跳轉那我瀏覽器就不應該出現2個請求了哈.... 無解啊