BAdI中的URL编码-SAP Marketing Cloud

2020-08-22 17:22发布

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

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


专家们,

我正在使用SAP Marketing Cloud的BAdI实施中的公共API(REST)。 在发送API请求之前,我需要对URL参数进行编码以获得正确的响应。 在BAdI实施中,我只能将ABAP用于具有特定限制的关键用户,并且不能为此目的使用标准类cl_http_utility。 还有另一种方法可以实现它吗?

编码如下:

"创建HTTP客户端以访问出站服务
                 DATA(lo_client)= cl_ble_http_client => create(
                     communication_scenario ='YY1_API_GPS_COORD_MAPQUEST'
                     outbound_service ='YY1_MAPQUESTAPI_REST'
                     )。

                 "创建服务请求
                 数据(lo_request)= cl_ble_http_request =>创建(
                 "用于服务调用的方法
                 )-> set_method(
                     if_ble_http_request => co_method-get
                 )。
 ...
 " URL lo_request看起来像=>
 https://open.mapquestapi.com/geocoding/v1/address?key=XXXXX&location=Vyskočilova15,Praha,CZ&thumbMaps = false
 ...
                 "发送请求并接收响应。
                 DATA(lo_response)= lo_client->发送(lo_request)。

                 取得回应的内容。
     DATA(ls_body)= lo_response-> get_body()。

如果我通过浏览器或邮递员应用发送相同的GET请求,我将获得正确的响应:

如果我在BAdI实现中检查API的响应,则会得到错误的响应,因为缺少街道名称中的'č'字符。 URL编码可以解决此问题,但是我不知道如何使用cl_http_utility类来实现它。 有想法吗?

谢谢。

贾罗。

(55.1 kB)

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

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


专家们,

我正在使用SAP Marketing Cloud的BAdI实施中的公共API(REST)。 在发送API请求之前,我需要对URL参数进行编码以获得正确的响应。 在BAdI实施中,我只能将ABAP用于具有特定限制的关键用户,并且不能为此目的使用标准类cl_http_utility。 还有另一种方法可以实现它吗?

编码如下:

"创建HTTP客户端以访问出站服务
                 DATA(lo_client)= cl_ble_http_client => create(
                     communication_scenario ='YY1_API_GPS_COORD_MAPQUEST'
                     outbound_service ='YY1_MAPQUESTAPI_REST'
                     )。

                 "创建服务请求
                 数据(lo_request)= cl_ble_http_request =>创建(
                 "用于服务调用的方法
                 )-> set_method(
                     if_ble_http_request => co_method-get
                 )。
 ...
 " URL lo_request看起来像=>
 https://open.mapquestapi.com/geocoding/v1/address?key=XXXXX&location=Vyskočilova15,Praha,CZ&thumbMaps = false
 ...
                 "发送请求并接收响应。
                 DATA(lo_response)= lo_client->发送(lo_request)。

                 取得回应的内容。
     DATA(ls_body)= lo_response-> get_body()。

如果我通过浏览器或邮递员应用发送相同的GET请求,我将获得正确的响应:

如果我在BAdI实现中检查API的响应,则会得到错误的响应,因为缺少街道名称中的'č'字符。 URL编码可以解决此问题,但是我不知道如何使用cl_http_utility类来实现它。 有想法吗?

谢谢。

贾罗。

(55.1 kB)
付费偷看设置
发送
3条回答
大道至简
1楼-- · 2020-08-22 17:39

嗨,

我使用escape()函数解决了这个问题。 对我来说很好。

致谢

Jaro

SKY徐
2楼-- · 2020-08-22 17:57

感谢Jaro。

哎,真难
3楼-- · 2020-08-22 17:50

Hello Jaro,

我建议针对此问题在组件BC-SRV-APS-EXT-BL上打开故障单。

最好的问候,
乔纳森

一周热门 更多>