public string HttpPost(string Url, string postDataStr)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
//request.AllowAutoRedirect = false; //禁止自动重定向
request.Method = "POST";
request.Headers.Add("AK", "c74f6e81f3854e928a4e2633b9d55a89");
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = Encoding.UTF8.GetByteCount(Url);
request.CookieContainer = cookie; //cookie信息由CookieContainer自行维护
Stream myRequestStream = request.GetRequestStream();
using (StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")))//gb2312
{
myStreamWriter.Write(Url);
myStreamWriter.Close();
}
HttpWebResponse response = null;
try
{
this.SetCertificatePolicy();
response = (HttpWebResponse)request.GetResponse();
}
catch (System.Exception ex)
{
throw;
}
//获取重定向地址
//string url1 = response.Headers["Location"];
if (response != null)
{
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
//MessageBox.Show(retString);
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
else
{
return "error"; //post请求返回为空
}
}
我发的:https://console-api-test.qibeitech.com/sign/productCheck/bindDevice?lockId=86812017491050&bikeId=http://ofo.so/plate/11000000×tamp=1504487889209&sign=3c02b0dd1c2b5ba9df236b78e89c5916
他们接收的:AKc74f6e81f3854e928a4e2633b9d55a89bikeIdhttp://ofo.so/plate/11000000http://ofo.so/plate/11000000https://console-api-test.qibeitech.com/sign/productCheck/bindDevice?lockId86812017491050lockId86812017491050timestamp15044878892091504487889209dcc59608864511e79673163ea306a3
求帮助,小白一个,,之前没怎么做过网络通信的
不要沉啊
你搞清楚人家接口数据是需要get还是post发送数据的先,看你地址是get提交的数据,
你贴出来的他们那边的不是接受到数据了
在线等啊,如果我提供的数据不到位请告诉我。。被公司催了,拜托大家了
很有可能是你转码的问题
去掉:request.Headers.Add("AK", "c74f6e81f3854e928a4e2633b9d55a89");
两种方式试一下:
1. 不要把参数拼到后面, 而是解析到postDataStr里面, 一般可能是对象转成json字符串, 然后加密一下, 可以找找其他调用这个方法的地方是怎么处理的数据;
2. 还是拼参数, 但是把 request.Method = "POST" 改为 GET, 有的接口get/post都行, 但这种方式不太靠谱, 最好还是第一种方式;