使用 CL_HTTP_CLIENT 将 json 字符串作为数据发送到外部 api 时出现无效请求正文错误
Invalid request body error when sending json string as data to an external api using CL_HTTP_CLIENT
我们在使用 CL_HTTP_CLIENT 向外部 api 发送 json 数据时遇到问题。
JSON 数据是使用 '/ui2/cl_json=>serialize( data = ls_body compress = abap_true pretty_name = /ui2/cl_json =>pretty_mode-camel_case )' .
将此 JSON 作为数据发送时,外部 api returns 状态 400 响应为
{ "errorCode": "INVALID_REQUEST_BODY", "message": "请求正文丢失或格式不正确。解析值时遇到意外字符:\u001f。路径'',第0行,位置0。” } .
我们还在后端对这个 JSON 数据进行了字符串化处理,因为它可能是由于解析错误造成的,但它没有用。
相同的字符串化数据尝试使用 ajax 通过浏览器控制台发送,它确实没有任何问题。
谁能告诉我们如何处理这个 json 对象并使用 CL_HTTP_CLIENT 将其发送到外部 api。
注意:JSON STRING 嵌套很深。
提前致谢..
您可以使用 request catcher 服务获取 SAP 输出。
然后检查你的输出有 valid json.
使用像 postman or SoapUI 这样的休息工具检查外部 api。每个开发人员不跟踪 guidliness 可能是外部的 api 有局限性。
问题出在字符串中的 unicode 上。
这些不被外部 api 接受,因此从字符串中删除并发送到 api 并且它确实起作用了。
感谢您的建议。
我们在使用 CL_HTTP_CLIENT 向外部 api 发送 json 数据时遇到问题。 JSON 数据是使用 '/ui2/cl_json=>serialize( data = ls_body compress = abap_true pretty_name = /ui2/cl_json =>pretty_mode-camel_case )' .
将此 JSON 作为数据发送时,外部 api returns 状态 400 响应为 { "errorCode": "INVALID_REQUEST_BODY", "message": "请求正文丢失或格式不正确。解析值时遇到意外字符:\u001f。路径'',第0行,位置0。” } .
我们还在后端对这个 JSON 数据进行了字符串化处理,因为它可能是由于解析错误造成的,但它没有用。 相同的字符串化数据尝试使用 ajax 通过浏览器控制台发送,它确实没有任何问题。
谁能告诉我们如何处理这个 json 对象并使用 CL_HTTP_CLIENT 将其发送到外部 api。 注意:JSON STRING 嵌套很深。
提前致谢..
您可以使用 request catcher 服务获取 SAP 输出。
然后检查你的输出有 valid json.
使用像 postman or SoapUI 这样的休息工具检查外部 api。每个开发人员不跟踪 guidliness 可能是外部的 api 有局限性。
问题出在字符串中的 unicode 上。 这些不被外部 api 接受,因此从字符串中删除并发送到 api 并且它确实起作用了。
感谢您的建议。