首页 > Web开发 > 详细

RestSharp 加号变空格 + HTTP 请求

时间:2020-09-07 21:05:33      阅读:70      评论:0      收藏:0      [点我收藏+]

背景介绍

与{公司Y}做接口对接工作,
然后我根据{公司Y}提供的Demo写了一个请求,
放到Postman中请求,是可以正确的返回数据的.

但是,我在程序中,使用{RestSharp}模拟请求的时候,
{公司Y}接口总是会返回,解密失败的提示...

先上HTTP请求


public static string Test()
{
	var client = new RestClient("http://api.test.com/");
	var request = new RestRequest("Users", Method.POST);
	//这个地方也是一个坑↓
	//request.AddHeader("Accept", "text/html, application/xhtml+xml, */*");
	//request.AddHeader("Accept", "*/*");
	request.AddHeader("Accept", "text/html");

	request.AddParameter("key", "peXUsje73l2Z3r6g5aacVKcJ++vD+2IsQB6DaUlD0Elgg=", ParameterType.GetOrPost);
	return client.Execute(request).Content;
}

发现问题所在→"+"

仔细看了下{公司Y}提供的key值,里面含有"+"...
所以情况差不多就是,
{公司Y}提供了一个,自己解密不了的key...

确认问题所在...

我使用抓包工具{Wireshark},
比较了一下postman发出的请求和程序发出的请求...
确认了,确实是因为程序发出的请求会将"+"号替换为" "(空格)
技术分享图片

试过将"+"url编码为"%2b"

试着将"+"号改变为"%2b",
但是{公司Y}会提示加密串的长度太长...
毕竟是和其它公司对接,
如果是自己负责HTTP的请求和响应,
那肯定是HTTP请求的时候,先将参数Url编码一下,
HTTP响应的时候,先将参数Url解码一下...

解铃还须系铃人...

最终{公司Y}提供了一个自己可以解密的key...(不含"+"号)

不解之地

为什么postman可以,但是程序使用RestSharp请求的不行呢...
postman底层将"+"号处理了一下?

RestSharp 加号变空格 + HTTP 请求

原文:https://www.cnblogs.com/love-zf/p/13628423.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!