ABAP HTTP POST
1.HTTP
DATA: lo_http_client TYPE REF TO if_http_client,
lv_service TYPE string,
lv_result TYPE string,
lo_ixml TYPE REF TO if_ixml,
lo_streamfactory TYPE REF TO if_ixml_stream_factory,
lo_istream TYPE REF TO if_ixml_istream,
lo_document TYPE REF TO if_ixml_document,
lo_parser TYPE REF TO if_ixml_parser. lv_service = 'http://...'. cl_http_client=>create_by_url(
EXPORTING
url = lv_service
IMPORTING
client = lo_http_client
EXCEPTIONS
argument_not_found =
plugin_not_active =
internal_error =
OTHERS = ). lo_http_client->propertytype_logon_popup = lo_http_client->co_disabled.
CALL METHOD lo_http_client->authenticate(
EXPORTING
* client = ''
* proxy_authentication = 'X'
username = ''
password = ''
* LANGUAGE = 'E'
).
CALL METHOD lo_http_client->request->set_header_field
EXPORTING
name = 'Content-Type'
value = 'application/JSON; charset=utf-8'.
CALL METHOD lo_http_client->request->set_method( 'POST' ). DATA lv_json TYPE string.
DATA: len TYPE i .
lv_json = '{"key": "name", "value": "name"}, {"key": "phone", "value": "911"}'.
len = strlen( lv_json ) . CALL METHOD lo_http_client->request->set_cdata
EXPORTING
data = lv_json
offset =
length = len. lo_http_client->send(
EXCEPTIONS
http_communication_failure =
http_invalid_state = ). lo_http_client->receive(
EXCEPTIONS
http_communication_failure =
http_invalid_state =
http_processing_failed = ). CLEAR lv_result .
lv_result = lo_http_client->response->get_cdata( ).
lo_ixml = cl_ixml=>create( ). lo_streamfactory = lo_ixml->create_stream_factory( ).
lo_istream = lo_streamfactory->create_istream_string(
lv_result ).
lo_document = lo_ixml->create_document( ).
lo_parser = lo_ixml->create_parser(
stream_factory = lo_streamfactory
istream = lo_istream
document = lo_document ).
lo_parser->parse( ).
CALL METHOD lo_http_client->close.
调用ODATA service,插入数据,事物码STRUST添加信任证书
2.HTTPS
CALL METHOD cl_http_client=>create
EXPORTING
host = 'api15.sapsf.cn'
service = ''
scheme = ''
ssl_id = 'ANONYM'
* proxy_host = wf_proxy
* proxy_service = wf_port
IMPORTING
client = lo_http_client. lo_http_client->propertytype_logon_popup = lo_http_client->co_disabled.
CALL METHOD lo_http_client->authenticate(
EXPORTING
* client = '110'
* proxy_authentication = 'X'
username = ''
password = ''
* LANGUAGE = 'E'
).
CALL METHOD lo_http_client->request->set_header_field
EXPORTING
name = '~request_protocol'
value = 'HTTPS/1.0'.
CALL METHOD lo_http_client->request->set_header_field
EXPORTING
name = '~request_uri'
value = '/odata/v2/......'.
CALL METHOD lo_http_client->request->set_header_field
EXPORTING
name = 'Content-Type'
value = 'application/json; charset=utf-8'.
CALL METHOD lo_http_client->request->set_method( 'POST' ).
https://www.cnblogs.com/xher/p/6590373.html
3. SAP 发送 HTTP POST(Web Service)
* 拼接XML的内表
DATA:
BEGIN OF wareqtext,
line TYPE c LENGTH ,
END OF wareqtext,
itreqtext LIKE TABLE OF wareqtext. * URL地址 DATA: l_url TYPE string . * 拼接的XML
DATA: strreq TYPE string. * 返回的XML DATA: return_str TYPE string . * 生成提交字符串的xml部分
CLEAR: strreq .
LOOP AT itreqtext INTO wareqtext.
IF strreq IS INITIAL .
strreq = wareqtext.
ELSE. * 有些系统不会自动换行,特加上换行符
CONCATENATE strreq cl_abap_char_utilities=>newline wareqtext-line INTO strreq.
ENDIF.
ENDLOOP. DATA: http_client TYPE REF TO if_http_client .
DATA: len TYPE i . len = STRLEN( strreq ) . CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = l_url
IMPORTING
client = http_client.
http_client->propertytype_logon_popup = http_client->co_enabled . CALL METHOD http_client->request->set_header_field
EXPORTING
name = 'Content-Type'
value = 'text/xml; charset=utf-8'. CALL METHOD http_client->request->set_cdata
EXPORTING
data = strreq
offset =
length = len.
CALL METHOD http_client->send
EXCEPTIONS
http_communication_failure =
http_invalid_state = .
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure =
http_invalid_state =
http_processing_failed = . * 获取返回的数据
return_str = http_client->response->get_cdata( ). CALL METHOD http_client->close.
ABAP HTTP POST的更多相关文章
- ABAP单元测试最佳实践
本文包含了我在开发项目中经历过的实用的ABAP单元测试指导方针.我把它们安排成为问答的风格,欢迎任何人添加更多的Q&A's,以完成这个列表. 在我的项目中,只使用传统的ABAP report. ...
- ABAP实现屏幕自己刷新和跳转功能
ABAP开发工程中,有时候需要让跳转出的屏幕自动实现跳转和刷新的功能,该功能的实现需要在屏幕PBO 里面调用相应的事件执行. 关键代码为: SET TITLEBAR ' 屏幕自动程序'. IF g_c ...
- 一步步实现ABAP后台导入EXCEL到数据库【3】
在一步步实现ABAP后台导入EXCEL到数据库[2]里,我们已经实现计划后台作业将数据导入数据库的功能.但是,这只是针对一个简单的自定义结构的导入程序.在实践应用中,面对不同的表.不同的导入文件,我们 ...
- 一步步实现ABAP后台导入EXCEL到数据库【2】
前文:http://www.cnblogs.com/hhelibeb/p/5912330.html 既然后台作业只能在应用服务器运行,那么,我们可以先将要上传的数据保存在应用服务器中,之后再以后台作业 ...
- 让ABAP开发者愈加轻松的若干快捷键
引言 ABAP是一种和当代编程语言在许多方面有着相当不同的编程语言.ABAP的某些方面可能会让我们奇怪,为什么它会如此复杂?而它的某些方面又是那么杰出,给予了ABAP开发者们比其它任何语言更多的便利. ...
- ABAP游标的使用
在Oracle,SQLServer中游标的使用是经常的,所以在ABAP不懂是不行的...... 1.声明游标 OPEN CURSOR [WITH HOLD] <c> FOR SEL ...
- 一步步实现ABAP后台导入EXCEL到数据库【1】
在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...
- ABAP关键字SUBMIT的简单例子和学习小记
网上有关SUBMIT实现程序调用的例子稍显复杂,而相关的参考和解释则不是很完善.本文给出一个SUBMIT的小示例程序(代码见文末),实现了最简单的程序间调用及返回值,以及SAP官方文档中相关内容的翻译 ...
- ABAP 常见查询问题解决方法
在ABAP 编程的时候会遇到查询单条语句的时候数能取对 但是条目数多了的话 会出现数不准确的问题 原因可能出现在查询使用了二分法查询方式 二分法查询下必须按排序的字段排序 还得按照排序的字段 ...
- SAP ABAP学习路线图--标准教程
SAP ABAP学习路线图--标准教程 摘自:http://www.cnblogs.com/clsoho/archive/2010/07/05/1771400.html
随机推荐
- asp.net怎样解决高并发问题
队列+多线程+couchbase缓存 ,解决高并发问题. using System; using System.Collections.Generic; using System.Linq; usin ...
- 清理Xcode的技巧和方法
移除对旧设备的支持 影响:可重新生成:再连接旧设备调试时,会重新自动生成.我移除了4.3.2, 5.0, 5.1等版本的设备支持. 路径:~/Library/Developer/Xcode/iOS D ...
- ios为app应用添加icon
在工程中打开plist文件,添加,选择icon files,然后添加不同分辨率的icon名称即可.如果clean后再运行程序还是没有看到效果,那么就删除掉app包然后 再次运行就可以看到效果了.
- xamarin.ios 半圆角按钮Readerer
xamarin.from上可以使用本身的button实现圆角带图标的按钮,但是没有半圆角的按钮实现,需要自己使用Renderer重新写过来重写一个button. 下面是一个重写的带边框的方式,代码如下 ...
- 卷积 convolution
这东西大学学过,然后我忘记了,后来就只记得这个名字了. https://zh.wikipedia.org/wiki/%E5%8D%B7%E7%A7%AF http://www.guokr.com/po ...
- 每天5道面试题(二)java基础
说出Servlet的生命周期,并说出Servlet和CGI的差别 Servlet被server实例化后,容器执行其init方法,请求到达时执行其service方法,service方法自己主动派遣执行与 ...
- ps快捷键记录
alt+delete 前景色填充 ctrl+delete 背景色填充 alt+shift+鼠标调节 变换选取,做圆环 ctrl+t 自由变换 alt+鼠标拖动 快捷复制某区域 delete ...
- awakeFromNib方法和viewDidLoad方法区别
当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作. 也就是说只有通 ...
- 数组方式使用jQuery对象
一. 使用jQuery选择器获取结果是一个jQuery对象.然而,jQuery类库会让你感觉你正在使用一个定义了索引和长度的数组.在性能方面,建议使用简单的for或者while循环来处理,而不是$.e ...
- web 表单方式上传文件方法(不用flash插件)
原理:使用表单的input type="file"标签,通过ajax提交表单请求,后台获取请求中的文件信息,进行文件保存操作 由于我测试用的做了一个上传文件和上传图片方法,所以我有 ...