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 @   明天星期五啦  阅读(301)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示