使用http请求post一个json请求体时,无论怎么处理json,总是报错

动作开发 · 578 次浏览
atheneus 创建于 1天0小时前

异常:值“Content-Type:application/json”的格式无效。

 

请求体内容

{"touser":"@all","msgtype":"text","agentid":"1000002","text":{"content":"asdfafgasfa"}}

最简单的json,用工具校验过了应该没问题

 

 

30123HTTP请求http post 发送消息
[in]失败后停止【值/表达式】True
[in]网址【值/表达式】https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=*************************************
[in]方法【值/表达式】POST
[in]请求头【变量 access_token】*************************************
[in]请求体类型【值/表达式】JSON
[in]请求体【值/表达式】{"touser":"@all","msgtype":"text","agentid":"1000002","text":{"content":"asdfafgasfa"}}
[in]禁止重定向【值/表达式】False
[in]UserAgent【值/表达式】
[in]超时时间【值/表达式】100
[in]显示进度条【值/表达式】False
[in]忽略HTTPS证书验证【值/表达式】False
[in]强制使用代理【值/表达式】False
[in]启用SSE流式响应【值/表达式】False
[in]Cookie【值/表达式】
非Get请求(POST), 处理请求体。
[in]内容类型【值/表达式】Content-Type:application/json
发送JSON格式。
异常:值“Content-Type:application/json”的格式无效。
在 System.Net.Http.Headers.MediaTypeHeaderValue.CheckMediaTypeFormat(String mediaType, String parameterName) 在 System.Net.Http.Headers.MediaTypeHeaderValue..ctor(String mediaType) 在 System.Net.Http.StringContent..ctor(String content, Encoding encoding, String mediaType) 在 Quicker.Domain.Actions.X.BuiltinRunners.HttpStep.<>c__DisplayClass67_0.KcGvEOcTe8puQFu5oChR.MoveNext() --- 引发异常的上一位置中堆栈跟踪的末尾 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Quicker.Domain.Actions.X.XActionHelper.ExecuteCommonAction(ActionExecuteContext context, ActionStep step, XAction action, Func`1 asyncActionFunc, Action successAction, Action failAction, StepInParamDef stopIfErrorParam, StepOutParamDef isSuccessOutputParam)
步骤(sys:http)执行失败,原因:值“Content-Type:application/json”的格式无效。
停止动作:值“Content-Type:application/json”的格式无效。
耗时:5ms
检测到了中止标志(OperationFailed),停止后续步骤执行。

回复内容
atheneus 23小时41分钟前
#1

问题解决了,给有同样困扰的人看

问题出在这一行。

[in]内容类型【值/表达式】Content-Type:application/json

这个子程序是2023年写的,当时内容类型写的是Content-Type:application/json,跑通了。

结果今年拿出来再次使用,竟然反复出错。

刚才才想到,是不是内容类型现在只需要写application/json就可以了。试了下果然通了

麻烦开发者解释下为什么之前带Content-Type:可以,现在不行了?很多写这个代码的,都是复制wget/curl等代码过来的,都是带Content-Type这个文本的。

CL 回复 atheneus 21小时4分钟前 :

这个应该都不行的,加上之后就不是合法的值了。 有可能服务端之前没有验证?

回复主贴