401错误从代码中使用REST服务但在浏览器中工作

时间:2013-12-03 21:33:53

标签: rest service http-status-code-401

我正在尝试从其他公司使用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();
        }

2 个答案:

答案 0 :(得分:1)

如果您没有访问该网址的权限,则会导致401错误。有关401错误的详细信息,请参阅here

看起来您正在尝试访问Home Depot API或与其相关的某种系统。许多API要求您发送通常在创建开发人员帐户时生成的身份验证令牌,或者在您尝试向其注册时提供给您的身份验证令牌。此身份验证令牌通过GET或POST与数据一起发送到您尝试访问的URL。情况并非总是如此 - 有时令牌是通过cookie或其他允许访问的存储方法存储的(这可能就是这种情况,因为访问我的机器上的URL不起作用但是它适用于你的 - 你可能有某种类型的在其他地方访问令牌。)

这些注意事项是特定于应用程序的,因此该令牌可能是什么以及如何访问它的详细信息(如果这是问题)取决于您尝试访问的系统。

答案 1 :(得分:0)

想出来。如果会话无效,则REST服务返回响应代码401。所以我抓住了这个异常并处理它。感谢。