使用CL_HTTP_CLIENT将json字符串作为数据发送到外部api时,无效的请求主体错误。

2020-08-13 12:55发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

使用CL_HTTP_CLIENT将json数据发送到外部api时我们遇到问题。
JSON数据使用'/ui2/cl_json => serialize(data = ls_body compress = abap_true pretty_name =/ui2/cl_json => pretty_mode-camel_case)"。

当发送此JSON作为数据时,外部 api返回状态400,响应为
{" errorCode":" INVALID_REQUEST_BODY"," message":"请求正文为 缺少或格式不正确。解析值时遇到意外字符:\ u001f。路径",行0,位置0"。 }。

我们还在后端对这个JSON数据进行了字符串化处理,这可能是由于解析错误导致的,但是它没有用。
相同的字符串化数据尝试使用ajax通过浏览器控制台进行发送,并且确实可以正常工作。

任何人都可以告诉我们如何处理此json对象,并使用CL_HTTP_CLIENT将其发送到外部api。
注意:JSON STRING是深层嵌套的。

先谢谢了。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

使用CL_HTTP_CLIENT将json数据发送到外部api时我们遇到问题。
JSON数据使用'/ui2/cl_json => serialize(data = ls_body compress = abap_true pretty_name =/ui2/cl_json => pretty_mode-camel_case)"。

当发送此JSON作为数据时,外部 api返回状态400,响应为
{" errorCode":" INVALID_REQUEST_BODY"," message":"请求正文为 缺少或格式不正确。解析值时遇到意外字符:\ u001f。路径",行0,位置0"。 }。

我们还在后端对这个JSON数据进行了字符串化处理,这可能是由于解析错误导致的,但是它没有用。
相同的字符串化数据尝试使用ajax通过浏览器控制台进行发送,并且确实可以正常工作。

任何人都可以告诉我们如何处理此json对象,并使用CL_HTTP_CLIENT将其发送到外部api。
注意:JSON STRING是深层嵌套的。

先谢谢了。

付费偷看设置
发送
5条回答
My梦
1楼-- · 2020-08-13 13:11

已解决在此由OP负责:"问题出在字符串中的unicode。外部api不接受这些unicode,因此将其从字符串中删除并发送到api,它确实起作用了。"

# p#

你好@ Mateusz Adamus
它只是一个从内部表创建的json数据 仅此而已。
一件事就是它还包含base64内容。

感谢和问候,
Rahul

小c菟菟
2楼-- · 2020-08-13 13:23
一些想法:
  • 序列化后您到底对字符串做什么?
  • 进入调试器,然后右击 序列化后,打开JSON字符串,将其下载到文件中,并在一些更好的文本编辑器中检查该奇怪字符\ u001f。 如果在那儿,请检查确切的位置。 它可能来自某些用户输入值(通常,用户只是从Web,Word文档等各种来源复制并粘贴数据,并带有"奇怪"和"不可见"字符,然后将这些数据输入到SAP中,然后在尝试传递时会发生问题。 这些数据到不同的系统。)
  • 您还可以在线尝试一些" JSON验证器"(但是这些可能不会发现Unicode字符无效)。
  • 检查是否 没有/ui2/cl_json的某些非常旧的版本(文档+版本和SAP注释位于 https://wiki.scn.sap.com/wiki/display/Snippets/One+more+ABAP+to+JSON+Serializer+and+Deserializer
Baoming ROSE
3楼-- · 2020-08-13 13:10

你好@ Sandra Rossi

我们没有向其中添加ani unicode。 从abap发送的相同数据已下载并从邮递员发送,并且确实有效。
我们确实检查了smicm,无法跟踪。 你能告诉我们在那可以做什么吗??

感谢和问候,

Rahul。

compass1988
4楼-- · 2020-08-13 13:26

您"未添加任何Unicode",但无论如何,事实是其中有一个(或日志有错误)。 抱歉,ICM跟踪实际上是事务代码SICF中的ICF客户端记录器,请参见: https://blogs.sap.com/2006/04/05/icf-recording-a-possibility-for-analysing/

木偶小白
5楼-- · 2020-08-13 13:24

这就是我的想法:-)感谢您的更新

一周热门 更多>