2020-08-22 16:00发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在发送包含特殊字符ë(Cliënt)的JSON消息。 我添加了交换属性CamelCharsetName,如SAP注释2533303中所述,在跟踪过程中,直到将特殊字符发送到接收系统之前,一切看起来都正常。 然后变成一个? (客户)。 我将交换配置文件添加到HTTP接收器之前的内容修改器形状中,但是它仍然弄乱了字符。
有什么想法吗?
好。 我现在在内容修饰符中有此内容:
{" regardingobjectid_msdyn_customerasset@odata.bind":"/msdyn_customerassets(${property.ObjectId})"," subject":" $ {property.Subject}"," description":"这是äCliënt"," Actualdurationminutes":30}
发送给接收者:
{" regardingobjectid_msdyn_customerasset@odata.bind":"/img/msdyn_customerassets(00f402b0-b649-ea11-a813-000d3a49e1a5)"," subject":" Afmelding"," description":"这是Cli?nt" ," actualdurationminutes":30}
在应用程序中显示:
th \ u00efs是\ u00e4 Cli \ u00ebnt
直接从Postman发送到接收应用程序效果很好。
您应该写"在应用程序中显示:th \ u00efs是\ u00e4 Cli \ u00ebnt"。 但是\ 00e4是charä的正确转义序列。 因此,接收应用程序能够确定发送给它的Unicode字符。 否则,您的应用程序将显示? (或其他垃圾)代替\ 00e4。 因此,从信息角度来看,我想说的是您的目标应用收到了正确的信息,只是无法呈现它。 因此,也许您的目标应用无法很好地解码json。 在PHP中 有一些方法可以解析包括Unicode转义序列的JSON并将其解码回正确的Unicode表示形式: https://stackoverflow.com/questions/3268810/encoding-troubles-one-format-to-another
嗨Iddo
可能是接收系统 需要了解编码。 尝试将一个名为Content-Type的标头(不是属性)添加到iflow中,并具有以下值:
application/json; charset = utf-8
,
Morten
您好!
尝试直接在CPI中临时设置有效负载, 即不要从邮递员张贴它。 保留Content-Type标头。 接收端有什么变化吗? 如果是这样,问题可能出在邮递员的编码上。 您是否从Postman发送Content-Type请求标头? 如果不是,请尝试添加具有相同内容的内容(即" application/json; charset = utf-8")。
问候,
嗨,Morten,
谢谢。 内容类型application/json已经存在。 添加charset = utf-8对该字符没有任何作用。 在目标系统中,它仍然显示为Cli \ u00ebnt,在跟踪中显示为Cli?nt。
我正在使用邮递员以Cliënt的身份发送请求: {" RegisterTimeLineInputJSON":{" RegisterTimeLine":{" ObjectTypeCode":" msdyn_customerasset"," Activity":"任务"," ObjectId ":"" 00f402b0-b649-ea11-a813-000d3a49e1a5","主题":" Afmelding","描述":"Cliënt"}}}}
将其转换为XML,将所有必要字段放在属性容器中,以在内容修改器步骤中再次提取它们,如下所示:
{" regardingobjectid_msdyn_customerasset@odata.bind":"/msdyn_customerassets(${property.ObjectId})"," subject":" $ {property.Subject}"," description":" $ {property.Description}" ," actualdurationminutes":30}
最多设置5个标签!
好。 我现在在内容修饰符中有此内容:
{" regardingobjectid_msdyn_customerasset@odata.bind":"/msdyn_customerassets(${property.ObjectId})"," subject":" $ {property.Subject}"," description":"这是äCliënt"," Actualdurationminutes":30}
发送给接收者:
{" regardingobjectid_msdyn_customerasset@odata.bind":"/img/msdyn_customerassets(00f402b0-b649-ea11-a813-000d3a49e1a5)"," subject":" Afmelding"," description":"这是Cli?nt" ," actualdurationminutes":30}
在应用程序中显示:
th \ u00efs是\ u00e4 Cli \ u00ebnt
直接从Postman发送到接收应用程序效果很好。
您应该写"在应用程序中显示:th \ u00efs是\ u00e4 Cli \ u00ebnt"。 但是\ 00e4是charä的正确转义序列。 因此,接收应用程序能够确定发送给它的Unicode字符。 否则,您的应用程序将显示? (或其他垃圾)代替\ 00e4。 因此,从信息角度来看,我想说的是您的目标应用收到了正确的信息,只是无法呈现它。 因此,也许您的目标应用无法很好地解码json。 在PHP中 有一些方法可以解析包括Unicode转义序列的JSON并将其解码回正确的Unicode表示形式: https://stackoverflow.com/questions/3268810/encoding-troubles-one-format-to-another
嗨Iddo
可能是接收系统 需要了解编码。 尝试将一个名为Content-Type的标头(不是属性)添加到iflow中,并具有以下值:
,
Morten
您好!
尝试直接在CPI中临时设置有效负载, 即不要从邮递员张贴它。 保留Content-Type标头。 接收端有什么变化吗? 如果是这样,问题可能出在邮递员的编码上。 您是否从Postman发送Content-Type请求标头? 如果不是,请尝试添加具有相同内容的内容(即" application/json; charset = utf-8")。
问候,
Morten
嗨,Morten,
谢谢。 内容类型application/json已经存在。 添加charset = utf-8对该字符没有任何作用。 在目标系统中,它仍然显示为Cli \ u00ebnt,在跟踪中显示为Cli?nt。
我正在使用邮递员以Cliënt的身份发送请求:
{" RegisterTimeLineInputJSON":{" RegisterTimeLine":{" ObjectTypeCode":" msdyn_customerasset"," Activity":"任务"," ObjectId ":"" 00f402b0-b649-ea11-a813-000d3a49e1a5","主题":" Afmelding","描述":"Cliënt"}}}}
将其转换为XML,将所有必要字段放在属性容器中,以在内容修改器步骤中再次提取它们,如下所示:
{" regardingobjectid_msdyn_customerasset@odata.bind":"/msdyn_customerassets(${property.ObjectId})"," subject":" $ {property.Subject}"," description":" $ {property.Description}" ," actualdurationminutes":30}
一周热门 更多>