我正在尝试从其他公司使用REST服务。当我在浏览器中使用链接时,它工作正常。但是从代码访问时我收到401错误。我究竟做错了什么?我是否需要在Web应用程序的web.config中添加内容?
string URL = @"https://hdapps-qa.homedepot.com/MYTHDPassport/rs/identity/isSessionValid?thdsso=TEST&callingProgram=PSC&Submit=Submit";
HttpWebRequest req = WebRequest.Create(URL)
as HttpWebRequest;
string result = null;
req.Method = "GET";
req.UseDefaultCredentials = true;
req.PreAuthenticate = false;
req.Credentials = CredentialCache.DefaultCredentials;
using (HttpWebResponse resp = req.GetResponse()
as HttpWebResponse)
{
StreamReader reader =
new StreamReader(resp.GetResponseStream());
result = reader.ReadToEnd();
}
答案 0 :(得分:1)
如果您没有访问该网址的权限,则会导致401错误。有关401错误的详细信息,请参阅here。
看起来您正在尝试访问Home Depot API或与其相关的某种系统。许多API要求您发送通常在创建开发人员帐户时生成的身份验证令牌,或者在您尝试向其注册时提供给您的身份验证令牌。此身份验证令牌通过GET或POST与数据一起发送到您尝试访问的URL。情况并非总是如此 - 有时令牌是通过cookie或其他允许访问的存储方法存储的(这可能就是这种情况,因为访问我的机器上的URL不起作用但是它适用于你的 - 你可能有某种类型的在其他地方访问令牌。)
这些注意事项是特定于应用程序的,因此该令牌可能是什么以及如何访问它的详细信息(如果这是问题)取决于您尝试访问的系统。
答案 1 :(得分:0)
想出来。如果会话无效,则REST服务返回响应代码401。所以我抓住了这个异常并处理它。感谢。