我想使用HttpClient
與網站進行交互。這是在公司類型的環境中,所有的Web訪問都通過一個Web代理。默認情況下,HttpClient和WebClient似乎都只是在這裏使用代理 - 但我也在代碼中指定了代理細節。HttpClient/WebClient - 通過代理與網站進行交互的問題
我的問題是,一些URL將正確加載,其他人不會。以下代碼顯示了我的意思。
var webc = new WebClient();
var x1 = webc.DownloadString("http://www.google.com"); // Works
var x2 = webc.DownloadString("http://www.google.ie"); // Works
var x3 = webc.DownloadString("http://maps.google.com"); // Works
var x4 = webc.DownloadString("http://maps.google.ie"); // 403 Forbidden exception
我看到與HttpClient相同的行爲,但代碼更詳細。如果我獲取403錯誤中返回的HTML,則表示我沒有進行身份驗證,並顯示我的用戶名爲空。
使用Chrome/FF/IE - 我可以瀏覽所有四個示例URL。代理不阻止我,或顯示相同的錯誤消息。
看起來代碼只有在沒有「www」子域名的網站上失敗 - 當它是非.com網站時。聽起來很瘋狂。
我試圖在本地運行菲德勒,看看什麼是請求之間的不同 - 從我所看到的 - 它看起來相同,除了網址:
GET http://maps.google.ie/ HTTP/1.1主機:地圖.google.ie 代理連接:保持活動
GET http://www.google.com/ HTTP/1.1主機:www.google.com 代理連接:保持活動
在'Auth'標籤提琴手顯示:
沒有代理授權標頭存在。
否授權標題存在。
對於兩者。但是這個.com例子很有用。 .ie示例失敗。我試圖在Chrome拉起相同maps.google.ie URL - 偉大的工程,我可以看到它有一個代理授權,在它的GET
GET http://maps.google.ie/ HTTP/1.1主機:maps.google。即 代理連接:保持活躍代理授權:NTLM T3RMTVNTUAAFAAACB4IBogQABAAzAAAACwALACgAAAAGAbFdAAAAD1BBVUxTT01xOTlEU1UTUR ==
誰能告訴我這是怎麼回事?如果該代理授權是我所需要的,那麼我如何讓HttpClient/WebClient包含它? 我試過創建一個WebProxy並在其上設置憑證 - 與CredentialCache一起提供用戶名/密碼/域名(以及我想到的域名的每個變體)。當我得到它'錯誤' - 所有網站似乎返回403.但是,當我得到它的權利 - 前3名工作和第四名不。在Fiddler中,我永遠無法在我所做的任何請求中看到代理授權 - 但它仍然適用於前三個網站。
我確定我錯過了一些東西,但我不知所措。任何幫助將非常感激。
您的IT部門需要修復其代理服務器! –