当前位置: 首页 > news >正文

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

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访问外围系统报错一般使用

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,
          msg  TYPE 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请求
  DATA  lo_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.

相关文章:

  • Android笔记:Android平台下SVG格式的解析与实践
  • ardunio R4 WiFi连接实战
  • 《Transformer如何进行图像分类:从新手到入门》
  • 人工智能基础知识笔记四:聚类分析
  • HOT100——二叉树篇Leetcode236. 二叉树的最近公共祖先
  • 【H2O2 | 软件开发】Axios发送Http请求
  • 队列的简单例题
  • cyberstrikelab lab2
  • 星越L_发动机舱开启及油液加注讲解
  • sqldef:一款免费的数据库变更管理工具
  • 基于llama_cpp 调用本地模型(llama)实现基本推理
  • Redis三大件 穿透、雪崩、击穿
  • 蓝桥杯进制问题秒破解法|冲击省一题单(二)
  • Spring 注解解析
  • 如何实现具备自动重连与心跳检测的WebSocket客户端
  • lambda表达式案例分析
  • Vector底层结构和源码分析(JDK1.8)
  • 【不动产登记全解析】范围、内容与不予登记的情形
  • 思维链医疗编程方法论框架(Discuss V1版)
  • MySQL 8 设置允许远程连接(Windows环境)
  • 北京最大做网站的公司/seo短期培训班
  • 广州在线网站制作推荐/网站域名注册查询
  • 网站怎样做seo推广/运营商推广5g技术
  • dedecms模板安装/seo常用的工具
  • 网站语言切换前端可以做么/推广网上国网
  • 网站源码程序/关键词检索