HttpWebRequest -- 一个很坑的401 UnAuthorization的解决方法

  昨天,一个新的客户在使用软件的时候,出现了401 UnAuthorization的错误。这个错误是在软件Call Restful API的时候出现的。软件使用HttpWebRequest来Call Restful API.

  查看解决方法,有下面几个原因会导致这个问题:

  1. 检查 ServicePointManager.SecurityProtocol 设置,并设置 ServicePointManager.ServerCertificateValidationCallback 以至少返回 true(以接受所有服务器证书)

  2. 检查请求头文件的“Authorization”是否包含正确的认证信息

  3. 检查是否使用了正确的凭据,例如用户名和密码

  这几个地方我都检查了,都是正确的。而且很奇怪的是,Postman中,相同的设置可以查询到数据,而使用C#程序就是不能得到数据,而且一直提示401。

  由于一直找不到原因,就使用Wireshark来抓包数据进行对比,对比发现Authorization信息都是一样的,到这里就完全没有头绪了。

  后续更换Call Restful API的方式,没有使用HttpWebRequest,使用第三方dll Stormpath.SDK来call api,发现返回信息变成了301 Moved。这个时候,偶然发现,将http修改为https,一切就都OK了。

  这样一通下来,感觉技术支持胡乱设置坑人,Request返回信息不准确也很坑人。

posted @ 2024-01-19 10:41  明天星期五啦  阅读(237)  评论(0编辑  收藏  举报