IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> ABAP 创建Rest接口实例 -> 正文阅读

[开发测试]ABAP 创建Rest接口实例

  1. 创建Rest接口
    创建类实现接口IF_HTTP_EXTENSION。
  METHOD if_http_extension~handle_request.
    DATA(lv_method) = server->request->get_method( )."获取调用方法
    CASE lv_method.
      WHEN 'GET'.
        me->get( server ).
      WHEN 'POST'.
        me->post( server ).
      WHEN 'OPTIONS'.
       me->options( server ).
      WHEN OTHERS.
        server->response->set_status( code =  '405' reason = 'test' ).
    ENDCASE.
  ENDMETHOD.
  *在不同的调用方法中,写逻辑,先解析传来的数据,处理后,返回数据
      DATA:lv_json    TYPE string,
    lv_JSON = server->request->get_cdata( ).//获取传过来的参数
    lv_json = server->request->get_content_type( ).//获取RequestHeader的Content-Type
    /ui2/cl_json=>deserialize( EXPORTING json = lv_json CHANGING data = lt_data ).//将json格式的参数转为内表或其他参数
    //转为内表后,处理完数据,就可以写返回数据
    server->response->set_status( code =  '200' reason = '成功' ).//设定返回的状态
    lv_re_json = zcl_data_to_json=>data_to_json( lv_message ).//将返回的数据再转为json格式
    server->response->set_cdata( lv_re_json ).//发送返回的json格式信息	
    server->response->set_content_type( 'application/json' ).//设定返回的内容类型

创建完后,用T-code:SICF,创建一个服务,在处理器清单中,添加刚才的类,保存激活后,就生成了服务。
创建服务
右键点击,选择测试服务,复制浏览器中的地址,就是接口的地址

  1. 调用Rest接口
DATA: lv_len           TYPE i, "发送报文长度
      lv_url           TYPE string, "接口地址
      lo_http_client   TYPE REF TO if_http_client, "http客户端
      lv_send_json     TYPE string, "发送的JSON
      lv_rec_json      TYPE string, "接收的JSON
      lv_authorization TYPE string,
      lv_code          TYPE i, "HTTP 返回状态
      lv_reason        TYPE  string. " HTTP 状态描述
  "先创建http客户端
  CALL METHOD cl_http_client=>create_by_url
    EXPORTING
      url                = lv_url "上面的地址
    IMPORTING
      client             = lo_http_client
    EXCEPTIONS
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3
      OTHERS             = 4.
        "不显示登录界面
  lo_http_client->propertytype_logon_popup = lo_http_client->co_disabled.
  "验证用户名和密码
    CALL METHOD LO_HTTP_CLIENT->AUTHENTICATE
    EXPORTING
      USERNAME = Lv_USERNAME
      PASSWORD = Lv_PASSWORD.
”设定调用方法 GET,POST   
    lo_http_client->request->set_method(
    	if_http_request=>co_request_method_get  ).
"设定传输请求内容格式以及编码格式
    lo_http_client->request->set_content_type(
      content_type = 'application/json; charset=utf-8'
    ).  	
 ”发送前数据准备   
 lv_send_json = /ui2/cl_json=>serialize( lt_data )."转发送的数据为JSON格式
   lv_len = strlen( lv_send_json ).
    CALL METHOD lo_http_client->request->set_cdata
      EXPORTING
        data   = lv_send_json
        offset = 0
        length = lv_len.   
  "发送
  CALL METHOD lo_http_client->send
    EXCEPTIONS
      http_communication_failure = 1                  " Communication Error
      http_invalid_state         = 2                  " Invalid state
      http_processing_failed     = 3                  " Error when processing method
      http_invalid_timeout       = 4                  " Invalid Time Entry
      OTHERS                     = 5.
  "接收
  CALL METHOD lo_http_client->receive
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3.    	
   "获取返回的状态信息
  CLEAR:lv_code,lv_reason.
  CALL METHOD lo_http_client->response->get_status
    IMPORTING
      code   = lv_code
      reason = lv_reason.
  "获取返回的JSON
  CLEAR:lv_rec_json,ls_token.
  lv_rec_json = lo_http_client->response->get_cdata( ).
  /ui2/cl_json=>deserialize( EXPORTING json = lv_rec_json
                              CHANGING  data = ls_token ).
  "关闭接口
  CALL METHOD lo_http_client->close.     
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:49:55  更:2022-05-05 11:50:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 15:17:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码