tsx81428 发表于 2025-3-14 12:14:25

SAP访问外围系统(http/https)

1、308 Permanent Redirect(错误)没办理,如果有高手办理请留言非常感谢交流。
   外围系统要改URL访问所在,Postman访问时通的没有任何问题,通过ABAP步伐调用报错308 Permanent Redirect,利用SMICM没有查到任何错误,而且找basis检察防火墙都开着没问题。颠末沟通对方提供URL所在时一级访问所在(Postman可以自动转接,abap步伐不可以),终极外围系统提供一个二级访问URL所在办理了。
2、https访问遇到问题以及办理思路
   abap步伐访问提示
https://i-blog.csdnimg.cn/direct/cf3202cc6f3e49c1a1a180e8d1c9d9cd.png
说明以前有步伐用到这个二级URL服务的证书已经导入系统,这个时间我们可以通过URL所在直接欣赏器访问一下 提示:no access key, access reject 说明需要加密KEY 访问这时间给第三方要就可以(KEY值 有的外围系统设置有效期,测试机生产机不一样这个一定要和对方确定好,不然传到生产机不能利用),代码header加一下就OK了,name稳定 value是变化的
r_client->request->set_header_field( name = 'x-gw-accesskey' value = ‘4f64b33f-e2da-4cd2-9ff4-804a’).
3、http访问错误查找日记(SMICM利用方法)
SMICM主要功能:
a. 监控服务和端口:
 SMICM 允许管理员监视系统上的各种服务和端口,确保它们正常运行。这对于确保与外部系统的通讯正常举行非常告急。
b. 处理和监控 HTTP 请求:
• 对于运行 SAP Web应用步伐服务器的系统,SMICM 提供了监视和处理 HTTP 请求的功能。这有助于检测和办理与 Web 服务相关的问题。
c. 管理网络连接:
• 管理员可以利用 SMICM 检察系统上的当前网络连接,包括连接到 SAP 系统的用户和外部系统之间的连接。这有助于监视系统的负载和性能。
d. SSL/TLS 证书管理:
• 对于启用了安全套接字层(SSL)或传输层安全性(TLS)的系统,SMICM 提供了证书管理功能。这包括检察和更新 SSL/TLS 证书,确保通讯的安全性。
e. http 缓存管理:
• 对于运行 Web 应用步伐的系统,SMICM 允许管理员管理 HTTP 缓存。这有助于优化 Web 应用步伐的性能,并确保用户得到最新的数据。
f. 系统性能监控:
• SMICM 提供了有关系统性能的信息,包括网络耽误和相应时间。这对于识别潜在性能问题并举行相应的调整非常有资助。
CL_HTTP_CLIENT访问外围系统报错一样平常利用
CALL METHOD lo_http_client->get_last_error
IMPORTING
code    = lv_code
message = err_message. 4、http源代码
DATA: BEGIN OF ls_json,
          emp_list    TYPE TABLE OF yshr_employee_info, "员工信息
          app         TYPE string,   "传固定值SAP
          operator_Id TYPE string, "item信息
      END OF ls_json.
DATA: BEGIN OF ls_respond,
          code TYPE string,
          msgTYPE string,
      END OF ls_respond.
***http 接口
DATA: lv_json         TYPE string.
DATA:lv_urlpassword TYPE string.
DATA: lv_len          TYPE i.
DATA: lv_url          TYPE string.            "http 服务接口地址
DATA: lr_client   TYPE REF TO if_http_client. "HTTP请求
DATAlo_root TYPE REF TO cx_root.            "异常
DATA: lv_text TYPE string.                  "异常文本
***赋值
MOVE-CORRESPONDING it_empinfo TO ls_json-emp_list.
ls_json-app      = 'sap'."要小写
ls_json-operator_Id = iv_operator.

CLEAR lv_json.
CALL METHOD /ui2/cl_json=>serialize
    EXPORTING
      data      = ls_json
      pretty_name = /ui2/cl_json=>pretty_mode-camel_case
    RECEIVING
      r_json      = lv_json.
***获取数据
TRY.
*&_创建http连接
      cl_http_client=>create_by_url(
      EXPORTING
          url                = lv_url
      IMPORTING
          client             = lr_client
      EXCEPTIONS
          argument_not_found = 1
          plugin_not_active= 2
          internal_error   = 3
          OTHERS             = 4
      ).
      IF lr_client IS BOUND.
*      CALL METHOD lr_client->request->set_method( 'POST' ).
*      lr_client->request->set_content_type( content_type = 'application/json; charset=UTF-8' ).
*      lr_client->request->set_header_field( name = 'Content-Type' value = 'application/json ; charset=UTF-8' ).

* 设定传输请求内容格式以及编码格式
      lr_client->request->set_content_type( content_type = 'application/json; charset=UTF-8' ).

* 设置POST请求
      lr_client->request->set_method( if_http_request=>co_request_method_post ).
* 设置传参方式
      lr_client->request->set_header_field( name = 'Content-Type' value = 'application/json' ).
      lr_client->request->set_header_field( name = 'x-gw-accesskey' value = lv_urlpassword ).
* 设置请求协议:HTTPS
      lr_client->request->set_header_field( name = '~request_protocol' value = 'HTTPS/1.1' ).
*& 记录长度
      lv_len = strlen( lv_json ).
      CALL METHOD lr_client->request->set_cdata
          EXPORTING
            data   = lv_json
            offset = 0
            length = lv_len.

      lr_client->send(
          EXCEPTIONS
            http_communication_failure = 1
            http_invalid_state         = 2 ).

      lr_client->receive(
          EXCEPTIONS
            http_communication_failure = 1
            http_invalid_state         = 2
            http_processing_failed   = 3 ).

      DATA(lv_result) = lr_client->response->get_cdata( ).

* 解析调用结果
      IF lv_result IS NOT INITIAL.
          CLEAR ls_respond.
          CALL METHOD /ui2/cl_json=>deserialize
            EXPORTING
            json = lv_result
            CHANGING
            data = ls_respond.
          IF ls_respond-code = '0'.
            ev_mtype = 'S'.
            ev_msg   = ls_respond-msg.
          ELSE.
            ev_mtype = 'F'.
            ev_msg   = ls_respond-msg.
          ENDIF.
      ELSE.
          ev_mtype = 'F'.
          ev_msg   = '请求接口失败'.
      ENDIF.
      CALL METHOD lr_client->close.
      ELSE.
      ev_mtype = 'F'.
      ev_msg   = '请求接口失败'.
      ENDIF.
    CATCH cx_root INTO lo_root.
      lv_text =lo_root->get_text( ).
      ev_mtype = 'F'.
      ev_msg   = lv_text.
ENDTRY.

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: SAP访问外围系统(http/https)