返回啥错误,http code是多少
http code?没有这个
总共是这些
@jianming2032:你这是你的请求内容,我看看你的返回,response
@MrNice:
你好,response返回内容
Headers = {Cache-Control: private
Content-Length: 275
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 26 Sep 2018 08:16:40 GMT
}
@jianming2032: 他想看的是你调用接口,别人给你响应的是啥?你给出这没有用啊。
@Jeffcky:
{"ErrorDescription":null,"Result":1,"AreaSummaryData":"","AvailableSeats":-
1,"ExtendedResultCode":0,"MaxSeatsPerRow":0,"Order":null,"RedemptionsRemainingForVouchers":
[],"SeatData":"","SeatDataLength":0,"SeatLayoutData":null,"SeatsNotAllocated":false,"SessionStatuses":[null]}
这个?
@jianming2032: 根据你给的内容,调用是成功的,你说的返回有误是指结果和你预想的不一样?还是指啥
@MrNice: 对,就是跟预想的不一样,Result=0才是正确的返回。
@jianming2032: 这时候分成两种情况了,1.如果接口是你们自己开发的,那么建议联合调试一下;2.如果接口是别人提供的,你无法知晓接口代码,那么看看对方提供的接口说明,Result=1代表什么,是不是传送的参数有问题
@MrNice: 别人提供的,而且说明不详细
@jianming2032: 这就很难受了,建议你联系接口开发商,文档写成这样也是没谁了
@MrNice: 只能这样了,谢了啊
这么做有问题的话,是不是有可能和IdentityServer中使用beartoken一样,IdentityServer中是请求头的键是Authorization,值对应你这里的是那个connectapitoken DC5F8....。这个token和guid有空格。你可以试试。再有你也没明确说是返回的是token参数有误,不排除其他问题。
弱弱问一句怎么不用HttpClient呢。
谢谢回复,我试试看
用HttpWebRequest配置请求方便一点?
你说的是不是这样:
request.Headers.Add("Authorization", "connectapitoken:DC5F8105-7717-4EA1-A4BF-0ED4-E85C2D77");
还是返回错误
@jianming2032: 返回的结果是啥??
@jianming2032: 不是那样的。后面没有冒号。将冒号换成空格。
var buffer=Encoding.UTF8.GetBytes(param);
request.GetRequestStream().Write(buffer, 0, buffer.Length);//这边写进request请求数据
加了
string paraUrlCoded = paras;
byte[] payload;
//将URL编码后的字符串转化为字节
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);//Encoding.ASCII.GetBytes(paraUrlCoded); ;//
//设置请求的 ContentLength
request.ContentLength = payload.Length;
@jianming2032: 还是没有用的吗?
@华临天下: 嗯。
@jianming2032:
var buffer = Encoding.UTF8.GetBytes(param); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "Post"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = buffer.Length; request.Timeout = 60 * 1000; Stream reqStream = request.GetRequestStream(); reqStream.Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream); var res = reader.ReadToEnd();
这个是我刚刚简写的一个请求,可以请求我本地的一个方法。你可以看看有没有对你帮助
@华临天下: 我对比了一下,基本上是一样的
System.Net.HttpWebRequest request;
request = (System.Net.HttpWebRequest)HttpWebRequest.Create(url);
//Post请求方式
request.Method = "POST";
// 内容类型
//request.ContentLength = 460;
request.ContentType = "application/json";
request.Accept = "application/json";
request.Headers.Add("connectapitoken", "DC5F8105-7717-4EA1-A4BF-0ED4-E85C2D77");
request.UserAgent = IE8;
//这是原始代码:
string paraUrlCoded = paras;// "p1=x&p2=y&p3=测试的中文";
byte[] payload;
//将URL编码后的字符串转化为字节
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);//Encoding.ASCII.GetBytes(paraUrlCoded); ;//
//设置请求的 ContentLength
request.ContentLength = payload.Length;
//获得请 求流
Stream writer = request.GetRequestStream();
//将请求参数写入流
writer.Write(payload, 0, payload.Length);
// 关闭请求流
writer.Close();
System.Net.HttpWebResponse response;
// 获得响应流
response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream resst;
resst = response.GetResponseStream();
//解压缩
if (response.ContentEncoding.ToLower().Contains("gzip"))
{
resst = new GZipStream(resst, CompressionMode.Decompress);
}
StreamReader sr = new StreamReader(resst, Encoding.UTF8);
string str = sr.ReadToEnd();
return str;
@jianming2032: 那你调试的时候是那边出错了啊?
@华临天下: 嗯,已经可以了,谢谢,不是这个的问题,是提交的数据不对,多谢了
非常感谢各位的帮助,问题已经解决了。
对于如何使用另一个接口的返回参数作为当前接口的Token发送Post请求,ApiPost也很好用而且很简单,有人想了解可以看下这个文章,我觉得写的很好。这个工具不难,易用性更强。https://mp.apipost.cn/a/b1c0cb1e60917430