是否可以通过自动登录来调用URL?

2020-09-18 05:16发布

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

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


你好

如何通过自动登录从SAP(带有报表或fuba)调用URL?

示例:我将URL称为 https://appdemo.docusign.com/home

然后我已登录Internet Explorer。

通过http_client,我可以设置登录电子邮件和密码。

我得到答复,一切正常。 但是我现在该怎么称呼该URL。

我的编码:

数据:lo_http_client类型参考if_http_client,
           lv_service TYPE字符串,
           lv_result TYPE字符串,
           lo_ixml类型参考if_ixml,
           lo_streamfactory类型参考if_ixml_stream_factory,
           lo_istream类型参考if_ixml_istream,
           lo_document类型参考if_ixml_document,
           lo_parser类型参考if_ixml_parser,
           lo_weather_element类型参考if_ixml_element,
           lo_weather_nodes类型参考if_ixml_node_list,
           lo_curr_node类型参考if_ixml_node,
           lv_value TYPE字符串,
           lv_node_length TYPE i,
           lv_node_index TYPE i,
           lv_node_name TYPE字符串,
           lv_node_value TYPE字符串。

     lv_service ='https://demo.docusign.net/xxxxxx'。

     cl_http_client => create_by_url(
       出口
         网址= lv_service
       输入
         客户端= lo_http_client
       例外情况
         arguments_not_found = 1
         plugin_not_active = 2
         internal_error = 3
         其他= 4)。

     lo_http_client-> request-> set_method('GET')。
     呼叫方法lo_http_client-> request-> set_header_field
       出口
         名称='X-DocuSign-身份验证'
         值=' <用户名> xxxxxxxxx   xxxxxxxxx   xxxxxx  。

     呼叫方法lo_http_client-> request-> set_header_field
       出口
         名称="接受"
         值='application/json'。

     lo_http_client->发送(
       例外情况
         http_communication_failure = 1
         http_invalid_state = 2)。

     lo_http_client-> receive(
       例外情况
         http_communication_failure = 1
         http_invalid_state = 2
         http_processing_failed = 3)。

     清除lv_result。
     数据:lv_result_x TYPE xstring。
     lv_result = lo_http_client-> response-> get_cdata()。
     lv_result_x = lo_http_client-> response-> get_data()。

     数据:lv_ret_code TYPE i,
           lv_err_string TYPE字符串。
     lo_http_client->响应-> get_status(
       输入
         代码= lv_ret_code
         原因= lv_err_string)。  "这里lv_err_string = OK
 

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

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


你好

如何通过自动登录从SAP(带有报表或fuba)调用URL?

示例:我将URL称为 https://appdemo.docusign.com/home

然后我已登录Internet Explorer。

通过http_client,我可以设置登录电子邮件和密码。

我得到答复,一切正常。 但是我现在该怎么称呼该URL。

我的编码:

数据:lo_http_client类型参考if_http_client,
           lv_service TYPE字符串,
           lv_result TYPE字符串,
           lo_ixml类型参考if_ixml,
           lo_streamfactory类型参考if_ixml_stream_factory,
           lo_istream类型参考if_ixml_istream,
           lo_document类型参考if_ixml_document,
           lo_parser类型参考if_ixml_parser,
           lo_weather_element类型参考if_ixml_element,
           lo_weather_nodes类型参考if_ixml_node_list,
           lo_curr_node类型参考if_ixml_node,
           lv_value TYPE字符串,
           lv_node_length TYPE i,
           lv_node_index TYPE i,
           lv_node_name TYPE字符串,
           lv_node_value TYPE字符串。

     lv_service ='https://demo.docusign.net/xxxxxx'。

     cl_http_client => create_by_url(
       出口
         网址= lv_service
       输入
         客户端= lo_http_client
       例外情况
         arguments_not_found = 1
         plugin_not_active = 2
         internal_error = 3
         其他= 4)。

     lo_http_client-> request-> set_method('GET')。
     呼叫方法lo_http_client-> request-> set_header_field
       出口
         名称='X-DocuSign-身份验证'
         值=' <用户名> xxxxxxxxx   xxxxxxxxx   xxxxxx  。

     呼叫方法lo_http_client-> request-> set_header_field
       出口
         名称="接受"
         值='application/json'。

     lo_http_client->发送(
       例外情况
         http_communication_failure = 1
         http_invalid_state = 2)。

     lo_http_client-> receive(
       例外情况
         http_communication_failure = 1
         http_invalid_state = 2
         http_processing_failed = 3)。

     清除lv_result。
     数据:lv_result_x TYPE xstring。
     lv_result = lo_http_client-> response-> get_cdata()。
     lv_result_x = lo_http_client-> response-> get_data()。

     数据:lv_ret_code TYPE i,
           lv_err_string TYPE字符串。
     lo_http_client->响应-> get_status(
       输入
         代码= lv_ret_code
         原因= lv_err_string)。  "这里lv_err_string = OK
 
4条回答
wang628962
1楼-- · 2020-09-18 05:58

在SM59中使用登录凭据创建目的地。 然后使用cl_http_client => create_by_destination获取您的客户端。

有关详细信息,请参见此处 https://blogs.sap.com/2014/11/09/calling-an-external-restful-service-from-abap-http-method-get /

悠然的二货
2楼-- · 2020-09-18 06:11

对不起。 以为您正在使用Web服务。 没意识到您实际上想要浏览器会话。

Alawn_Xu
3楼-- · 2020-09-18 05:54

只需设置API网址并发送请求-身份验证信息要么存储在cookie中(将自动发送),要么您需要设置一些标头字段或GET/POST参数

 lo_http_client-> refresh_request(例外http_action_failed = 1
                                             其他= 2)。
 如果sy-subrc <> 0。
   "错误处理
 万一。

 cl_http_utility => set_request_uri(request = lo_http_client-> request uri ='API URL')。

 lo_http_client-> send(例外http_communication_failure = 1
                                  http_invalid_state = 2
                                  其他= 3)。
 如果sy-subrc <> 0。
   "错误处理
 万一。
 

致谢

Domi

宇峰科技
4楼-- · 2020-09-18 06:12

这是API的一部分-我了解其中一些,但绝对不是全部!

只需获取AUTH令牌并提供下一个调用(例如,使用方法CL_GUI_HTML_VIEWER-> SHOW_URL_IN_BROWSER)

并且,请: RTFM

致谢

多米

一周热门 更多>