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

打印 上一主题 下一主题

主题 945|帖子 945|积分 2837

1、308 Permanent Redirect(错误)没办理,如果有高手办理请留言非常感谢交流。
   外围系统要改URL访问所在,Postman访问时通的没有任何问题,通过ABAP步伐调用报错308 Permanent Redirect,利用SMICM没有查到任何错误,而且找basis检察防火墙都开着没问题。颠末沟通对方提供URL所在时一级访问所在(Postman可以自动转接,abap步伐不可以),终极外围系统提供一个二级访问URL所在办理了。
2、https访问遇到问题以及办理思路
   abap步伐访问提示

说明以前有步伐用到这个二级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访问外围系统报错一样平常利用
  1. CALL METHOD lo_http_client->get_last_error
  2. IMPORTING
  3. code    = lv_code
  4. message = err_message.
复制代码
4、http源代码
  1.   DATA: BEGIN OF ls_json,
  2.           emp_list    TYPE TABLE OF yshr_employee_info, "员工信息
  3.           app         TYPE string,   "传固定值SAP
  4.           operator_Id TYPE string, "item信息
  5.         END OF ls_json.
  6.   DATA: BEGIN OF ls_respond,
  7.           code TYPE string,
  8.           msg  TYPE string,
  9.         END OF ls_respond.
  10. ***http 接口
  11.   DATA: lv_json         TYPE string.
  12.   DATA:lv_urlpassword TYPE string.
  13.   DATA: lv_len          TYPE i.
  14.   DATA: lv_url          TYPE string.            "http 服务接口地址
  15.   DATA: lr_client   TYPE REF TO if_http_client. "HTTP请求
  16.   DATA  lo_root TYPE REF TO cx_root.            "异常
  17.   DATA: lv_text TYPE string.                    "异常文本
  18. ***赋值
  19.   MOVE-CORRESPONDING it_empinfo TO ls_json-emp_list.
  20.   ls_json-app        = 'sap'."要小写
  21.   ls_json-operator_Id = iv_operator.
  22.   CLEAR lv_json.
  23.   CALL METHOD /ui2/cl_json=>serialize
  24.     EXPORTING
  25.       data        = ls_json
  26.       pretty_name = /ui2/cl_json=>pretty_mode-camel_case
  27.     RECEIVING
  28.       r_json      = lv_json.
  29. ***获取数据
  30.   TRY.
  31. *&_创建http连接
  32.       cl_http_client=>create_by_url(
  33.         EXPORTING
  34.           url                = lv_url
  35.         IMPORTING
  36.           client             = lr_client
  37.         EXCEPTIONS
  38.           argument_not_found = 1
  39.           plugin_not_active  = 2
  40.           internal_error     = 3
  41.           OTHERS             = 4
  42.       ).
  43.       IF lr_client IS BOUND.
  44. *        CALL METHOD lr_client->request->set_method( 'POST' ).
  45. *        lr_client->request->set_content_type( content_type = 'application/json; charset=UTF-8' ).
  46. *        lr_client->request->set_header_field( name = 'Content-Type' value = 'application/json ; charset=UTF-8' ).
  47. * 设定传输请求内容格式以及编码格式
  48.         lr_client->request->set_content_type( content_type = 'application/json; charset=UTF-8' ).
  49. * 设置POST请求
  50.         lr_client->request->set_method( if_http_request=>co_request_method_post ).
  51. * 设置传参方式
  52.         lr_client->request->set_header_field( name = 'Content-Type' value = 'application/json' ).
  53.         lr_client->request->set_header_field( name = 'x-gw-accesskey' value = lv_urlpassword ).
  54. * 设置请求协议:HTTPS
  55.         lr_client->request->set_header_field( name = '~request_protocol' value = 'HTTPS/1.1' ).
  56. *& 记录长度
  57.         lv_len = strlen( lv_json ).
  58.         CALL METHOD lr_client->request->set_cdata
  59.           EXPORTING
  60.             data   = lv_json
  61.             offset = 0
  62.             length = lv_len.
  63.         lr_client->send(
  64.           EXCEPTIONS
  65.             http_communication_failure = 1
  66.             http_invalid_state         = 2 ).
  67.         lr_client->receive(
  68.           EXCEPTIONS
  69.             http_communication_failure = 1
  70.             http_invalid_state         = 2
  71.             http_processing_failed     = 3 ).
  72.         DATA(lv_result) = lr_client->response->get_cdata( ).
  73. * 解析调用结果
  74.         IF lv_result IS NOT INITIAL.
  75.           CLEAR ls_respond.
  76.           CALL METHOD /ui2/cl_json=>deserialize
  77.             EXPORTING
  78.               json = lv_result
  79.             CHANGING
  80.               data = ls_respond.
  81.           IF ls_respond-code = '0'.
  82.             ev_mtype = 'S'.
  83.             ev_msg   = ls_respond-msg.
  84.           ELSE.
  85.             ev_mtype = 'F'.
  86.             ev_msg   = ls_respond-msg.
  87.           ENDIF.
  88.         ELSE.
  89.           ev_mtype = 'F'.
  90.           ev_msg   = '请求接口失败'.
  91.         ENDIF.
  92.         CALL METHOD lr_client->close.
  93.       ELSE.
  94.         ev_mtype = 'F'.
  95.         ev_msg   = '请求接口失败'.
  96.       ENDIF.
  97.     CATCH cx_root INTO lo_root.
  98.       lv_text =  lo_root->get_text( ).
  99.       ev_mtype = 'F'.
  100.       ev_msg   = lv_text.
  101.   ENDTRY.
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表