POST请求返回400 Bad Request求助(Postman可正常返回201)
POST请求返回400 Bad Request排查解决(已通过Basic Auth但Postman正常)
核心问题:请求体JSON格式完全无效
你的requestBody字符串存在严重语法错误,是误将两个完整JSON对象直接拼接导致的:
- 第一个JSON对象结尾的
}后莫名多出surementUnitCode":"KS",...的内容,破坏了JSON结构 - 整个请求体是两个独立JSON对象的无序拼接,服务器无法解析,直接返回400状态码
请对照Postman中的正常请求参数修正请求体:如果是单条数据,删除多余的后半段JSON内容;如果是批量请求,用[]将两个对象包裹为合法JSON数组。
次要问题:冗余Auth设置与缺失Content-Type头
- 重复设置Basic Auth:
aqHttp.CreatePostRequest(address, username, password)方法已自动生成并添加Authorization: Basic xxx请求头,手动调用SetHeader再次添加属于冗余操作,建议删除该代码行。 - 缺失Content-Type头:Postman发送JSON请求时会自动添加
Content-Type: application/json,但你的代码未设置该头,服务器可能无法识别请求体格式,需补充:aqHttpRequest.SetHeader("Content-Type", "application/json");
修正后的示例代码片段
function PostImportProduct() { var address = "https://logdemota-dev.st.test.cz:10351/MYSTOCKLOGISTICSTAWMSINT_DEV/V1/product"; var username = "API_TEST"; var password = "xxxxxx"; // 修正为单条合法JSON请求体(可根据Postman参数调整) var requestBody = '{"extIsId":"abc/777","productCode":"ExterniKodSort","name":"TA_API777","type":0,"measurementUnitCode":"KS","weightGross":1.1,"weightNett":1.1,"grossDimension":{"height":1.1,"width":1.1,"depth":1.1,"volume":1.1},"pictureUrl":"www.aaa.cz/SORT.png","expirationMandatory":1,"serialNumbersRecords":{"inboundMandatory":1,"outboundMandatory":1},"batches":1,"barcodes":[{"barcode":123456,"active":1,"default":1,"measurementUnitCode":"ks"}]}'; // 利用CreatePostRequest自带的Auth功能 var aqHttpRequest = aqHttp.CreatePostRequest(address, username, password); // 添加JSON格式标识头 aqHttpRequest.SetHeader("Content-Type", "application/json"); var aqHttpResponse = aqHttpRequest.Send(requestBody); // 读取响应数据用于排查 Log.Message(aqHttpResponse.AllHeaders); Log.Message(aqHttpResponse.StatusCode); Log.Message(aqHttpResponse.StatusText); Log.Message(aqHttpResponse.Text); }
额外排查建议
若修正后仍返回400,查看aqHttpResponse.Text的具体内容——服务器通常会在400响应中返回字段错误、缺失必填项等具体提示,可根据提示进一步调整请求参数。
内容的提问来源于stack exchange,提问作者Jandak
相关产品推荐
相关产品推荐

