点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我有一个需求,我需要使用单令牌身份验证在SAP系统中使用外部RESTful Web服务。 我们将使用此Web服务来验证将在SAP系统中创建的地址。 URL是一个普通的https类型url。
基础团队已经在SM59中创建了一个连接,但是测试连接出现错误,因为那里没有维护用户名和密码(这是单个令牌Web服务)。
我正在使用以下代码在ABAP中使用Web服务:
数据:lo_http_client类型参考if_http_client, lo_rest_client类型参考cl_rest_http_client, lv_payload TYPE字符串, lv_response TYPE字符串, lv_http_reason TYPE字符串, lv_payload_x TYPE xstring, lv_http_code TYPE i, lo_response类型参考if_rest_entity。 cl_http_client => create_by_url( 出口 url ='https://********' 输入 客户端= lo_http_client 例外情况 arguments_not_found = 1 plugin_not_active = 2 internal_error = 3 其他= 4)。 如果sy-subrc <> 0。 返回。 万一。 ****使用基础团队创建的SM59连接时。 ** cl_http_client => create_by_destination( **出口 ** destination ='TEST'"逻辑目的地(在函数调用中指定) **进口 ** client = lo_http_client" HTTP客户端抽象 **例外情况 ** arguments_not_found = 1 ** destination_not_found = 2 ** destination_no_authority = 3 ** plugin_not_active = 4 ** internal_error = 5 **其他= 6 **)。 创建对象lo_rest_client 出口 io_http_client = lo_http_client。 lo_http_client-> request-> set_version(if_http_request => co_protocol_version_1_0)。 * CALL FUNCTION'SCMS_STRING_TO_XSTRING' *出口 *文字= lv_payload *重要 *缓冲区= lv_payload_x。 * **在标头中传递令牌值 呼叫方法lo_http_client-> request-> set_header_field 出口 名称="授权" 值= lv_token_value。 **在标头中传递内容类型值,这是必填字段 呼叫方法lo_http_client-> request-> set_header_field 出口 名称="内容类型" 值='application/json'。 **在标头中传递Accept值,该标头是必填字段 呼叫方法lo_http_client-> request-> set_header_field 出口 名称="接受" 值='application/json'。 lo_http_client-> request-> set_method('POST')。 lo_http_client-> request-> set_content_type('application/json')。 * lo_http_client-> request-> set_data(lv_payload_x)。 lo_http_client-> propertytype_logon_popup = if_http_client => co_disabled。 *发送请求 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)。 如果sy-subrc EQ 0。 万一。 lv_response = lo_http_client-> response-> get_cdata()。 *获取响应状态 调用方法lo_http_client-> response-> get_status 输入 代码= lv_http_code 原因= lv_http_reason。 如果sy-subrc EQ 0。 万一。
在上面的代码中,我在接收响应的同时在接收方法中收到异常http_communication_failure。 错误代码确定为404:连接被拒绝。 create_by_url和create_by_destination调用中均出现此错误。 但是此错误代码不是来自客户端为此Web服务提供的错误代码列表。
有人可以告诉上面使用SAP中的单个令牌RESTful Web服务的上述代码/方法是否正确? 如果不是,那么上面的代码出了什么问题/丢失了。 另外请评论一下如何测试基础团队创建的SM59连接,以了解它是否有效。 当前,由于未维护用户名/密码,测试连接抛出错误(不适用!)。
任何帮助将不胜感激。
你好
您解决了问题吗?
一周热门 更多>