0

我得到了一个 json 提要。

它不需要任何用户名或密码即可访问。

从谷歌浏览器可以看到。

在谷歌 Chrome 开发者工具中,它也显示状态 401,但仍然能够读取数据。

然后我尝试使用 C# web request 或 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);
4

1 回答 1

0

您可以“捕获” HttpWebRequest 引发的 401 异常,并使用如下代码从 WebException 中读取内容:

        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();
            }
        }
于 2015-05-08T00:50:13.407 回答