我用post上传json格式数据,总是出现400错误怎么办

StephenDylan 2018-04-01 04:48:02
public static string PostUrl(string url, string postData)
{
string result = "";

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);

req.Method = "POST";

req.ContentType = "application/json";

byte[] data = Encoding.UTF8.GetBytes(postData);

req.ContentLength = data.Length;

using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);

reqStream.Close();
}

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

Stream stream = resp.GetResponseStream();

//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}

return result;
}
用这个代码上传json格式数据始终报400错误,不知道原因在哪儿,求大神告知
...全文
2937 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
StephenDylan 2018-04-03
  • 打赏
  • 举报
回复
引用 15 楼 Xiaolv2013的回复:
我也是小白,不过我拿你的代码在我机器跑了一遍,成功获得返回信息了!也就是说代码本身是可以用的,
如果你确认对方的网址是正常的,别人可以用的,
按照楼上的各位大神的指导,你现在可以考虑下是不是你提交的json串有可能有问题,导致对方服务器无法识别,所以抛出异常,
你确认下提交的json串是否是对方服务器要求的格式,
为了谨慎,还可以去 json.cn 把你提交的json串验证下,看是否有缺符号什么的
是json串有问题,我做的这是登录并返回token,我用了postman及fiddler抓包,找到原因是提供的账号密码错了
StephenDylan 2018-04-03
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning的回复:
你贴出的代码并没有反映出你7#描述的流程 虽然 400 说是你发送的头有瑕疵,但实际是你被视为了非法用户
是的,这几天认真学了下,原来是别人提供的json数据有错
StephenDylan 2018-04-03
  • 打赏
  • 举报
回复 1
引用 12 楼 以专业开发人员为伍的回复:
你觉得“好像没那么复杂”,可能是因为这是一个技术论坛,所以我的回复是给网络服务技术开发人员的。如果你只是问“我请求的地址怎么非法啊?”,你说还能怎么回答啊?这其实就不是 csdn 论坛讨论的问题了。这应该问你的服务方技术支持人员。毕竟 csdn 是一个技术论坛,而不是搞免费网站维护的。
问题解决了,谢谢大佬的答复
shw014 2018-04-02
  • 打赏
  • 举报
回复
参考:HTTP 400 错误 - 请求无效 (Bad request) 原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装; 2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型; 解决方案: 1)对照字段名称,类型保证一致性 2)使用stringify将前端传递的对象转化为字符串 data: JSON.stringify(param) ;
xuzuning 2018-04-02
  • 打赏
  • 举报
回复
http 400 含义是你访问的页面域名不存在或者请求错误 由于注释掉 req.ContentType = "application/json"; 返回 415 显然不是域名不存在而是请求错误(bad request) 但 HttpWebRequest 并不会发出不合法的请求,显然是另有原因了 http 状态码,可以由web 服务器发出,也可以由应用程序发出,你的情况应该就是没有正确的传递 token 而产生的
  • 打赏
  • 举报
回复
引用 7 楼 dylan1998 的回复:
服务端是别人提供的,我们只能通过接口进行上传数据。大概过程是这样的,先通过post登录进入之后,得到响应response的数据,再用json接收,获得token然后上传数据。现在是在post登录名及密码时用json格式上传数据时出的这个问题
你的请求,人家返回状态码“请求的地址错误”,你说还要怎么办?
  • 打赏
  • 举报
回复
你觉得“好像没那么复杂”,可能是因为这是一个技术论坛,所以我的回复是给网络服务技术开发人员的。如果你只是问“我请求的地址怎么非法啊?”,你说还能怎么回答啊?这其实就不是 csdn 论坛讨论的问题了。这应该问你的服务方技术支持人员。毕竟 csdn 是一个技术论坛,而不是搞免费网站维护的。
  • 打赏
  • 举报
回复
如果你不能调试、跟踪服务器端,那么就只能联系服务方的技术支持人员。
正怒月神 2018-04-02
  • 打赏
  • 举报
回复
https://blog.csdn.net/hanjun0612/article/details/60126445
oraen 2018-04-02
  • 打赏
  • 举报
回复
这个没办法了。不是我打击你 这个是真的没办法了 我也是为了10个字
Xiaolv2013 2018-04-02
  • 打赏
  • 举报
回复
我也是小白,不过我拿你的代码在我机器跑了一遍,成功获得返回信息了!也就是说代码本身是可以用的,
如果你确认对方的网址是正常的,别人可以用的,
按照楼上的各位大神的指导,你现在可以考虑下是不是你提交的json串有可能有问题,导致对方服务器无法识别,所以抛出异常,
你确认下提交的json串是否是对方服务器要求的格式,
为了谨慎,还可以去 json.cn 把你提交的json串验证下,看是否有缺符号什么的
xuzuning 2018-04-01
  • 打赏
  • 举报
回复
你贴出的代码并没有反映出你7#描述的流程 虽然 400 说是你发送的头有瑕疵,但实际是你被视为了非法用户
StephenDylan 2018-04-01
  • 打赏
  • 举报
回复
引用 6 楼 以专业开发人员为伍的回复:
你的 url 无法对应到你的服务器端的服务程序,所以你的 web 服务器端(比如说 IIS 承载的 asp.net 网站)返回了 4xx 错误。 “连服务都找不到”,这样的 bug 其实最容易理解了,远比 5xx 的异常要容易理解(因为后者需要跟踪你自己的服务代码内部的异常)。除非你的服务故意抛出 4xx 异常,否则都是你的配置网站路径的时候给自己买下的坑。使用 asp.net 路由不但慢、而且容易出错。所以最好的方式是先提供一个最直截了当的 ashx。
谢谢大佬。但这个好像没那么复杂,服务端是别人提供的,我们只能通过接口进行上传数据。大概过程是这样的,先通过post登录进入之后,得到响应response的数据,再用json接收,获得token然后上传数据。现在是在post登录名及密码时用json格式上传数据时出的这个问题,你说的这些我不怎么懂,没学过网络,但老师要求我们完成这个项目。
  • 打赏
  • 举报
回复
你的 url 无法对应到你的服务器端的服务程序,所以你的 web 服务器端(比如说 IIS 承载的 asp.net 网站)返回了 4xx 错误。 “连服务都找不到”,这样的 bug 其实最容易理解了,远比 5xx 的异常要容易理解(因为后者需要跟踪你自己的服务代码内部的异常)。除非你的服务故意抛出 4xx 异常,否则都是你的配置网站路径的时候给自己买下的坑。使用 asp.net 路由不但慢、而且容易出错。所以最好的方式是先提供一个最直截了当的 ashx。
  • 打赏
  • 举报
回复
贴出你的 url 调试画面。 你可以在你的服务器端代码设置断点,当你看到根本连第一条代码都没有执行,就应该去查找更底层的配置。 不要滥用 asp.net 路由之类的繁琐的东西。写成需要尽量简单直接,使用 ashx 之类的来直截了当的。不要为了技术而编程。
xuzuning 2018-04-01
  • 打赏
  • 举报
回复
先把 req.ContentType = "application/json"; 注释掉
StephenDylan 2018-04-01
  • 打赏
  • 举报
回复
引用 1 楼 JeruSalem的回复:
带cookie
具体该怎么操作呢,我是小白,谢谢
StephenDylan 2018-04-01
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning的回复:
先把 req.ContentType = "application/json"; 注释掉
注释掉就会出现415错误
JeruSalem 2018-04-01
  • 打赏
  • 举报
回复
带cookie

110,538

社区成员

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

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

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