• 全部
...

C#访问json数据报错:由于意外的数据包格式,握手失败。

zzzj-ovo 2019-02-25 04:46:02

static void Main(string[] args)
{
strUserName = "test";
strPassWord = "test";
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
{
return true;
};
string getJson = string.Empty;
string url = "https://10.0.18.41:8081/api/v1/oauth/token";
string postdata = "grant_type=password&username=" + strUserName + "&password=" + strPassWord;
getJson = PostUrl(url, postdata);
Console.WriteLine(getJson);
Console.ReadKey();
}

static string PostUrl(string strUrl, string strPostData)
{
string strReturnValue = string.Empty;
try
{
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(strUrl);
httpReq.Method = "POST";
httpReq.Timeout = 100000;//设置请求超时时间,单位为毫秒
httpReq.KeepAlive = false;
httpReq.ProtocolVersion = HttpVersion.Version10;
httpReq.ContentType = "application/x-www-form-urlencoded";
if (strUserName != string.Empty || strPassWord != string.Empty)
{
string usernamePassword = strUserName + ":" + strPassWord;
usernamePassword = "test1:test1";
httpReq.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(usernamePassword)));
}
byte[] bytePostData = Encoding.UTF8.GetBytes(strPostData);
httpReq.ContentLength = bytePostData.Length;
using (Stream reqStream = httpReq.GetRequestStream())
{
reqStream.Write(bytePostData, 0, bytePostData.Length);
reqStream.Close();
}
HttpWebResponse httpResponse = (HttpWebResponse)httpReq.GetResponse();
Stream stream = httpResponse.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
strReturnValue = reader.ReadToEnd();
reader.Close();
}
if (httpResponse != null)
{
httpResponse.Close();
}
if (httpReq != null)
{
httpReq.Abort();
}
}
catch(Exception ex)
{
AppLogHelper.WriteErrorLog(ex);
}
return strReturnValue;
}
...全文
给本帖投票
7832 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
a282421083 2021-01-03
  • 打赏
  • 举报
回复 1
协议原因,https应该改成http。C#中https和http是不可以通用的,需要单独设定,如果协议用错了额,就容易出现这个错误!
zzzj-ovo 2019-02-26
  • 打赏
  • 举报
回复
协议原因,https应该改成http,不知道为什么python上面就可以通用,兜兜转转最后回到原点,python这点是真的坑啊。
zzzj-ovo 2019-02-25
  • 打赏
  • 举报
回复
这样还是不行
引用 6 楼 qq_15794739 的回复:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072; 这3种协议,试一下,单个也试一下
北京.NET 2019-02-25
  • 打赏
  • 举报
回复
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;


这3种协议,试一下,单个也试一下
zzzj-ovo 2019-02-25
  • 打赏
  • 举报
回复
引用 4 楼 qq_15794739 的回复:
一直出现,还是一会一出现,客户端跟服务端在一台设备上吗?
一直出现,不在一个设备上,用python语言写的测试可以获取数据的,但是C#就是连不上,一直报这个错。 这是python的代码 import http.client, urllib.parse, json import base64 api_host1='10.0.18.41:8081' bearer = base64.b64encode(bytes('test1:test1','utf-8')) #获取用户token def getAccessToken(username, password): params = 'grant_type=password&username=' + username + '&password=' + password print(params) headers = {"Cache-Control": "no-cache", "X-Requested-With":"XMLHttpRequest" } headers["Content-Type"] = 'application/x-www-form-urlencoded' headers["Authorization"] = 'Basic ' + bearer.decode('utf-8') conn = http.client.HTTPConnection(api_host1) conn.request("POST", "/api/v1/oauth/token", params, headers) response = conn.getresponse() print(response.status, response.reason) data = response.read().decode('utf-8') r = json.loads(data) token = r['access_token'] conn.close() return token
北京.NET 2019-02-25
  • 打赏
  • 举报
回复
一直出现,还是一会一出现,客户端跟服务端在一台设备上吗?
zzzj-ovo 2019-02-25
  • 打赏
  • 举报
回复
引用 2 楼 qq_15794739 的回复:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 这个注释试一下,有可系统不支持这么新的
不行啊,我注释试了一下,单独每个也都试了,都不行
北京.NET 2019-02-25
  • 打赏
  • 举报
回复
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 这个注释试一下,有可系统不支持这么新的
zzzj-ovo 2019-02-25
  • 打赏
  • 举报
回复

111,078

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部