无法从ABAP执行用户注册服务(云身份服务)

2020-09-16 23:08发布

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

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


嗨,

我在Cloud Identity Service中有一个应用程序。 我已经提供了该服务的API身份验证。

我在HCP中创建了一个SAPUI5应用程序,并且能够使用REST API进行用户注册。

https://helphan。 .ondemand.com/cloud_identity/frameset.htm?e6bb70d5e43c4ff89ff700beb82b25fe.html#loio0aa433c741a24df9ac2b3a5faca202de

但是,当我从ABAP服务器或Boomerang之类的客户端调用相同的API URL时,它会给出以下响应

响应码:400-错误的请求-名称ID属性为必填项。

但是我提供了name_id和email属性。

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

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


嗨,

我在Cloud Identity Service中有一个应用程序。 我已经提供了该服务的API身份验证。

我在HCP中创建了一个SAPUI5应用程序,并且能够使用REST API进行用户注册。

https://helphan。 .ondemand.com/cloud_identity/frameset.htm?e6bb70d5e43c4ff89ff700beb82b25fe.html#loio0aa433c741a24df9ac2b3a5faca202de

但是,当我从ABAP服务器或Boomerang之类的客户端调用相同的API URL时,它会给出以下响应

响应码:400-错误的请求-名称ID属性为必填项。

但是我提供了name_id和email属性。

付费偷看设置
发送
4条回答
木偶小白
1楼 · 2020-09-17 00:12.采纳回答

嗨,

如SAP文档中所述,我已经在HTTP请求的标头参数中提供了name_id和email。

但这还不够。 我们还需要将这些参数(name_id&email)作为正文传递。

因此,在ABAP中,除了将参数作为标头请求传递之外,我们还需要使用-CL_HTTP_CLIENT-> REQUEST-> APPEND_CDATA将这些参数作为正文传递

致谢

Sunoj

My梦
2楼-- · 2020-09-16 23:47

嗨本,

是的,甚至正在使用同一用户创建一个User,但是我的要求是在Response中获得电子邮件激活链接,而该链接不是通过此API"/​​ service/scim/Users"获取的

感谢和问候,

Aisurya

绿领巾童鞋
3楼-- · 2020-09-16 23:47

您好 Sunoj

您介意共享使用CL_HTTP_CLIENT在ABAP中调用REST api"服务/用户"的代码段。

感谢与问候,

Anitha

SAP砖家
4楼-- · 2020-09-17 00:10
调用方法cl_http_client => create_by_destination
         出口
           目的地='HCP'
         输入
           客户端= http_client
 *例外情况
 * arguments_not_found = 1
 * destination_not_found = 2
 * destination_no_authority = 3
 * plugin_not_active = 4
 * internal_error = 5
 *其他= 6
               。
       如果sy-subrc <> 0。
 *在这里实施适当的错误处理
 *      万一。

 呼叫方法http_client-> REQUEST-> SET_HEADER_FIELD
      导出名称='name_id'
                VALUE = nameid
                 。


  呼叫方法http_client-> REQUEST-> SET_HEADER_FIELD
       出口名称='电子邮件'
                 VALUE =电子邮件。


  呼叫方法http_client-> REQUEST-> SET_HEADER_FIELD
       出口名称='first_name'
                 VALUE =第一。


  呼叫方法http_client-> REQUEST-> SET_HEADER_FIELD
       出口名称='姓氏'
                 VALUE =最后。


 呼叫方法http_client-> REQUEST-> SET_HEADER_FIELD
      导出名称='〜request_method'
                VALUE ='POST'
                 。


  呼叫方法http_client-> REQUEST-> SET_HEADER_FIELD
       出口名称="内容类型"
                 VALUE ='application/x-www-form-urlencoded'。




 清除单。
 CONCATENATE'name_id ='namid'&email ='mail'&first_name ='FIRST'&last_name ='LAST INTO成单身。


 呼叫方法http_client-> REQUEST-> append_cdata
   出口
     数据= w_single
 *偏移量= 0
 *长度= -1
     。
         呼叫方法http_client->发送
           例外情况
             http_communication_failure = 1
             http_invalid_state = 2。




         呼叫方法http_client-> receive
           例外情况
             http_communication_failure = 1
             http_invalid_state = 2
             http_processing_failed = 3。






 呼叫方法http_client-> RESPONSE-> GET_STATUS
     输入
       CODE = HTTP_STATUS_CODE
       原因= STATUS_TEXT。
         结果= http_client->响应-> get_cdata()。


         IF HTTP_STATUS_CODE =201。"成功


        

         万一。


         呼叫方法http_client->关闭
           例外情况
             http_invalid_state = 1
             OTHERS =2。

嗨,

您可以使用上面的代码-这将在behaulf上进行用户注册。

或者您可以使用基于SCIM的API来创建用户(根据您的业务情况)

谢谢

Sunoj Michael

一周热门 更多>