0

我被給了一個json飼料。如何忽略401並繼續閱讀飼料

它不需要任何用戶名或密碼進行訪問。

從谷歌瀏覽器可以看出。

在Google Chrome開發人員工具中,它也表示狀態爲401, 但仍能讀取數據。

然後我嘗試使用C#web請求或webclient,我得到401並拋出,不再能夠繼續。

那麼Chrome如何做到這一點?我該怎麼辦?

我的C#代碼:

WebRequest request = WebRequest.Create(url); 
request.UseDefaultCredentials = true; 
request.Method = WebRequestMethods.Http.Get; 
((HttpWebRequest)request).UserAgent = userAgent; 
request.Timeout = timeOut; 
((HttpWebRequest)request).Accept = "application/json"; 
response = request.GetResponse(); 
Stream dataStream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(dataStream, Encoding.UTF8); 
+1

如果它肯定沒有按用憑證迴應401,那麼可能是401響應本身具有json,所以你可以捕獲WebException並使用它的Response。這將是非常奇怪的。 –

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

0

可以「捕獲」由HttpWebRequest的拋出和使用這樣的代碼讀出了引發WebException內容401例外:

 try { 
      // your code above 
     } 
     catch(Exception oEx) 
     { 
      if(oEx.GetType() == typeof(WebException)) 
      { 
       HttpWebResponse wr = ((WebException)oEx).Response as HttpWebResponse; 
       Stream dataStream = wr.GetResponseStream(); 
       StreamReader reader = new StreamReader(dataStream, Encoding.UTF8); 
       string str = reader.ReadToEnd(); // str will contain the body of the HTTP 401 response 
       reader.Close(); 
      } 
     }