2010-11-20 24 views
0

我想從一個網址獲取流:http://actueel.nl.pwc.com/site/syndicate.jsp但我得到了403錯誤。它需要登錄。我用小提琴來檢查爲什麼IE可以打開它,而我的代碼卻沒有。我得到的是在IE中打開鏈接時有2個連接完成。 1成功,而另一個得到了403. 403是一個吉夫形象的子鏈接。似乎xml是一個公共文件,但它包含的映像位於一個不可訪問的文件夾中。C#403錯誤,因爲該文件包含無法訪問的圖像?或者是什麼?

我需要知道如何忽略圖像,所以我仍然可以獲得流的其餘部分。這是我的代碼進行測試(用WeClient太和頭tryed的way..i):

try 
{ 
    WebRequest request = WebRequest.Create("http://actueel.nl.pwc.com/site/syndicate.jsp"); 

    request.Credentials = CredentialCache.DefaultCredentials; 

    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

    Stream dataStream = response.GetResponseStream(); 

    StreamReader reader = new StreamReader(dataStream); 

    MessageBox.Show(reader.ReadToEnd()); 
} 
catch(Exception ex){ 
    MessageBox.Show(ex.Message); 
} 

感謝您的反應;)

回答

0

我同意德米特羅。 WebRequest是不是試圖下載jsp文件中引用的gif圖像,只有jsp本身的內容正在被下載。嘗試在IE請求中仔細查看(在Fiddler中)與您的請求比較 - 只有url而且所有的請求/響應頭 - 並查看是否有其他任何東西丟失,如cookie或ACCEPT頭。

+0

是的,有區別....我改變了我的代碼最多,但使用WebClient..the我唯一不力的對決是在接受頭。我力圖找到如何使用WebClient來做到這一點 – Brayen 2010-11-20 18:08:53

0

使用Wireshark和wget,區別僅在頭文件中。

遠程服務器需要用戶代理和Accept頭。

如:

WebRequest request = WebRequest.Create("http://actueel.nl.pwc.com/site/syndicate.jsp"); 
((HttpWebRequest)request).UserAgent = "stackoverflow.com/q/4233673/111013"; 
((HttpWebRequest) request).Accept = "*/*"; 
+0

嗨,感謝它現在的作品! – Brayen 2010-11-20 18:05:16

+1

不用擔心。不要忘記閱讀StackOverflow FAQ,並將最佳答案標記爲已接受。 – 2010-11-20 18:10:55

相關問題