【问题标题】:401 Error when accessing API访问 API 时出现 401 错误
【发布时间】:2012-05-12 02:43:23
【问题描述】:

我看到了一些对此问题的回应,但在我的情况下似乎都没有。情况如下。

我正在使用来自 thetvdb.com 的 API。

我正在通过 API 加载 XML。如果我运行该应用程序,它会给我一个 401 错误。如果我先在 IE 中加载 URL,然后运行应用程序,它会正常加载。

我怀疑这是一个 cookie 问题,但我不确定如何在下面的请求期间传递该 cookie。

var _doc = new XmlDocument();
_doc.Load(_url);

提前感谢您的帮助。

【问题讨论】:

  • API 是 thetvdb.com,身份验证是通过 API 密钥完成的。
  • 除了 API 密钥之外没有其他凭据要传递,我也尝试过发送标头信息但没有成功。

标签: c# xml json api xmlhttprequest


【解决方案1】:

HTTP error 401 means "unauthorized".

这意味着您需要联系提供 API 的人员并询问他们如何进行身份验证。

每个提供商都不同。
合适的人是那些提供 Web 服务/API 的人。

【讨论】:

  • 但是,作为 GUESS,我会说它可能是通过证书完成的。 IE 识别它,但 .NET 运行时不建议使用证书对您进行身份验证,并且证书被 IE 识别但 .NET 运行时不识别。
  • API 是 thetvdb.com,身份验证通过 API 密钥完成。
  • 所以没有人遇到这个问题?
  • 我遇到过三个不同的供应商,每个供应商的解决方案都不同。我从未使用过 thetvdb.com,但我坚持我最初的回答,即“要问的人是提供网络服务/API 的人”。
【解决方案2】:

经过大量阅读和反复试验,我已经弄清楚了这一点。我已经在几个网站上对此进行了测试。

WebRequest _wr = WebRequest.Create(_url);
_wr.UseDefaultCredentials = true;
_wr.PreAuthenticate = true;
_wr.GetResponse();
//do your stuff
_wr.Dispose();

这似乎复制了我手动打开浏览器并导航到页面以防止启动应用程序时出现 401 错误的步骤。我希望这对其他人有所帮助,因为我理解这种挫败感。

【讨论】: