基本上我一直在試圖做的是從服務器上下載一個文件。服務器發送自動重定向這是很好的,但通過分組嗅探一個程序,它成功地下載該文件我發現,在集管(用於第二請求)爲:C#發送一個沒有servername的HttpWebRequest
GET /path/to/file.txt
...
Host: server.com
而不是當前響應是生成的(我認爲是標準):
GET www.server.com/path/to/file.txt
在500服務器錯誤使用正常的HttpWebRequest方法的結果,我在嘗試正如人們所期望只使用相對路徑時拋出的異常。 使用AllowAutoRedirect不適用於這種情況,因爲Cookie處理不當,但即使我手動處理,也會發生相同的錯誤。
如何做到這一點(最好沒有套接字:D)?
「標準」 GET在後看起來壞了,我相信。 [HTTP 1.1 *需要*主機頭](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23) - 在這種情況下,URI可能也是服務器相對的。如果需要更多的控制,302/303/307可以隨時手動處理。 – 2011-09-01 05:33:21
您使用什麼軟件包來獲取文件? HttpClient可以通過NuGet使用,比System.Net類更容易使用 – Jason
感謝@ pst,你說得對(我以爲是)標準請求是不正確的。由HttpWebRequest生成的請求正在發送主機,但仍然像上面那樣放入GET行,有沒有辦法刪除它?這是我看到的與我的請求和正在工作的唯一不同之處。我正在手動處理300個請求,我正在處理的請求會發回一個位置標題,並且我正在嘗試將此用於我的下一個請求(僅僅是因爲2個Cookie是從服務器發送的,而我的CookieContainer似乎只是存儲一個當我使用AllowAutoRedirect) – James