ABAP接口之Http发送json报文
abap 调用http 发送 json 测试函数
SE11创建结构:zsmlscpnotice
SE37创建函数:zqb_test_http_fuc1
FUNCTION zqb_test_http_fuc1.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------
DATA: json_ser TYPE REF TO cl_trex_json_serializer,
json_des TYPE REF TO cl_trex_json_deserializer.
DATA: lv_url TYPE string."http 服务接口地址
DATA: lo_http_client TYPE REF TO if_http_client.
DATA: lv_len TYPE i."发送报文长度
DATA: lv_respon TYPE string.
DATA: lv_subrc TYPE sy-subrc.
DATA: lv_json_str TYPE string. "发送报文
DATA: lv_msgty TYPE c,
lv_msgtx TYPE string.
DATA: lt_json TYPE STANDARD TABLE OF zsmlscpnotice,
ls_json TYPE zsmlscpnotice.
* 设置HTTP接口地址
lv_url = 'http://ip:端口/服务'.
* 设置报文内容(json格式字符串)
ls_json-functionname = 'XXXXXX'.
ls_json-bcpcode = '20170214000000'.
ls_json-status = 'S'.
ls_json-msg = '请调用接口抓取数据'.
ls_json-result = ''.
APPEND ls_json TO lt_json.
* 内表->JSON
CREATE OBJECT json_ser
EXPORTING
data = lt_json[].
CALL METHOD json_ser->serialize.
CALL METHOD json_ser->get_data
RECEIVING
rval = lv_json_str.
"创建客户端请求
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.
IF sy-subrc <> 0.
"lv_subrc = sy-subrc.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH
sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
"设定传输请求内容格式以及编码格式
lo_http_client->request->set_content_type( content_type = 'application/json; charset=utf-8' ).
"设定调用服务
lo_http_client->request->set_method( if_http_request=>co_request_method_post ).
"设置待传输内容
lv_len = strlen( lv_json_str ).
CALL METHOD lo_http_client->request->set_cdata
EXPORTING
data = lv_json_str
offset = 0
length = lv_len.
"发送请求
lo_http_client->send( EXCEPTIONS http_communication_failure = 1
http_invalid_state = 2 ).
IF sy-subrc <> 0.
"操作失败,获取失败原因
"lv_subrc = sy-subrc.
lo_http_client->get_last_error( IMPORTING message = lv_msgtx ).
lv_msgty = 'E'.
EXIT.
ENDIF.
"读取远程服务返回的处理过结果。
lo_http_client->receive( EXCEPTIONS http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3 ).
IF sy-subrc <> 0 .
"lv_subrc = sy-subrc.
lo_http_client->get_last_error( IMPORTING message = lv_msgtx ).
lv_msgty = 'E'.
EXIT.
ELSE.
"读取返回返回内容
CLEAR lv_respon.
lv_respon = lo_http_client->response->get_cdata( ).
ENDIF.
ENDFUNCTION.
ABAP接口之Http发送json报文的更多相关文章
- Java 用HTTP的方式发送JSON报文请求
前言: 项目调用第三方接口时,通常是用socket或者http的通讯方式发送请求:http 为短连接,客户端发送请求都需要服务器端回送响应,请求结束后,主动释放链接.Socket为长连接:通常情况下S ...
- 使用LR编写HTTP协议Json报文格式接口脚本实战
最近在做HTTP协议接口压测时,遇到一些编写脚本方面的问题,在这里总结记录下,以便以后温习,也希望能帮助到和我有同样困惑的朋友吧. //实战代码如下所示:Action() { lr_start_tra ...
- python通过http请求发送soap报文进行webservice接口调用
最近学习Python调用webservice 接口,开始的时候主要采用suds 的方式生产client调用,后来发现公司的短信接口采用的是soap报文来调用的,然后开始了谷歌,最后采用httplib ...
- python使用requests发送application/json报文数据
def client_post_jsondata_requests(request_url,requestJSONdata): #功能说明:发送json请求报文到指定的地址并获取请求响应报文 #输入参 ...
- 【Java】接口开发中关于接受和发送json的相关范例
接受json package com.suneee.scn.wms.web.rocketmq; import java.util.List; import net.sf.json.JSONArray; ...
- HttpClient发送Json数据到指定接口
项目中遇到将Json数据发送到指定接口,于是结合网上利用HttpClient进行发送. /** * post发送json数据 * @param url * @param param * @return ...
- Jmeter 发送json{Jfinal 接口req rsp均为json}
链接地址:http://yangyoupeng-cn-fujitsu-com.iteye.com/blog/2013649 使用jmeter发送json数据.方法有三种 原创,转载请注明出处 1.利用 ...
- ABAP-HTTP发送JSON
1. HTTP发送JSON格式数据: function zap_01_url_sap_to_c3 . *"------------------------------------------ ...
- PHP如何通过Http Post请求发送Json对象数据?
因项目的需要,PHP调用第三方 Java/.Net 写好的 Restful Api,其中有些接口,需要 在发送 POST 请求时,传入对象. Http中传输对象,最好的表现形式莫过于JSON字符串了, ...
随机推荐
- crontab,定时任务执行找不到库or shell可执行,crontab 定时任务下就不能执行,tensorflow,ImportError: libcuda.so.1: cannot open shared object file: No such file or directory
在线上启动一个定时任务,但是起来查看,发现任务执行找不到库,报cuda错误: ImportError: libcuda.so.1: cannot open shared object file: No ...
- jQuery之位置坐标图形相关方法
jQuery实例方法-位置图形 位置坐标图形大小相关方法: .offset() .position() .scrollTop() ..scrollLeft() .width()..height() . ...
- php 计算坐标点方圆周围多少米的坐标算法
//地球半径 6371千米 const EARTH_ROUNT = 6371; /** * @param $distance 方圆多少千米 默认500米 */ private function _ge ...
- nodejs设置跨域访问
//设置跨域访问app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", ...
- Heroku登录问题
second_app 这一步还没有完成,登录接口维护.
- “菜”鸟理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)
既然要学.NET,就要先认识认识她,我不喜欢大段大段文字的东西,自己通过理解,画个图,来看看.NET的沉鱼落雁,闭月羞花之容. 最下层蓝色部分是.NET Framework的基础,也是所有应用软件的基 ...
- VS下.net开发常用扩展、配置
Vue.js Pack Copy As Html HTML Tools Word Highlight With Margin 绿豆沙颜色:R:199 G:237 U:204
- python环境搭建(linux)
python安装 # wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz # yum install openssl-devel ...
- Docker端口映射
Docker端口映射是指将容器内应用的服务端口映射到本机宿主机器.当要在宿主机外部访问Docker内部应用时,需要对容器内应用端口进行映射. 一.容器启动时指定端口映射 容器运行时可以通过-p 或 - ...
- aruba 开启802.1X认证
1.即在ac上指定一个radius server认证 2.创建本地账户测试