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字符串了, ...
随机推荐
- Post提交带参网址
前端 $(function(){ var obj=$('#form1'); obj.validate({ submitHandler: function (form){ var data={}; da ...
- java命令--jstat 工具使用
jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具.他可以显示本地或远程虚拟机进程中的类装载.内存.垃圾收集.JIT编译等运行数据, ...
- python day07笔记总结
2019.4.4 S21 day07笔记总结 一.深浅拷贝 1.copy.copy() 浅拷贝 deep.copy() 深拷贝 2.一般情况 1.str/int/bool 是不可变类型 ...
- fair scheduler配置
<property> <name>yarn.resourcemanager.scheduler.class</name> <value>or ...
- VS 提示对象被多次指定;已忽略多余的指定
最近有一个工程编译老是出现这个问题,网上的解决方案说是工程目录下有同名的源文件,所以编译出了同名的obj.然而我检查了一下并没有.经尝试,把所有文件从项目中移除再重新添加进来就行了..应该是因为我反复 ...
- Babel插件:@babel/plugin-transform-runtime
一 概述 每个Babel编译后的脚本文件,都以导入的方式使用Babel的帮助函数,而不是每个文件都复制一份帮助函数的代码. 1 优点 (1)提高代码重用性,缩小编译后的代码体积. (2)防止污染全局作 ...
- jdbc导致的问题
遇到的问题:利用eclipse编写web project,Tomcat服务器成功开启,也通过build path导入了jdbc的路径,但是还是出现下面问题 连接数据库代码如下: 连接数据库语句没有问题 ...
- Winform文本框只能输入限定的文本
比如WInform中的文本框只能输入数字活着字母和退格键,e.kaychar(按下键盘的值)
- Day2数据结构和算法
2019-02-28,10:23:52 算法效率的度量方法 事后统计方法:为每一个程序编制测试程序 ,比较时间.(很麻烦,没有普遍适用性) 事前分析估算方法:在计算机程序编写前,依据统计方法对算法进行 ...
- node.js的Promise库-bluebird示例
前两天公司一哥们写了一段node.js代码发给我,后面特意提了一句“写的不太优雅”.我知道,他意思是回调嵌套回调,因为当时比较急也就没有再纠结.然而内心中总记得要解决这个问题.解决node.js的回调 ...