2009-01-26 73 views
26

我試圖改進Java Html文檔,但我遇到了HttpUrlConntion的問題。有一件事是,如果用戶代理是Java VM,則有些服務器會阻止請求。另一個問題是HttpUrlConnection未設置ReferrerLocation標題字段。由於多個網站使用這些字段來驗證內容是從他們自己的網站訪問的,因此我在這裏也被阻止。據我所見,唯一的解決辦法是替換HTTP協議的URL處理程序。或者有什麼方法可以修改默認的HTTP處理程序?如何修改HttpUrlConnection的標頭

回答

42

URL.openConnection打開URL。可選投射到HttpURLConnection。致電URLConnection.setRequestProperty/addRequestProperty

默認User-Agent標頭值是從"http.agent"系統屬性中設置的。 PlugIn和WebStart允許你設置這個屬性。

+10

確保在適當的地方區分addRequestProperty和setRequestProperty。設置的變體用相同的密鑰覆蓋任何現有的標題。如果已經存在,則添加變體會添加標頭並添加額外的實例。 – laz 2009-01-26 19:53:34

+0

`addRequestProperty`是否添加了一個新行(換句話說,請求將有2行** **相同​​的**鍵)還是將逗號和新值附加到現有行? – Pacerier 2011-12-26 12:45:16

2

如果您使用Apache HttpClient來管理您的程序化HTTP連接,您將獲得一個非常有用的API,它可以創建連接(並且可選地自動重新連接失敗),設置標題,發佈vs獲取,獲取返回內容的方便方法以及更多。

0

我解決了我的問題。我們可以將頭文件發送給application/json,並將該主體作爲json對象傳遞。這只是解決了這個問題。