SAP的代码向www发送http请求,这句话像是在搞笑一样。但是仔细想想我们随便打开个浏览器访问个网址,就是在向www发送http请求,这有什么搞笑的呢?SAP既是应用也是开发环境,对外发送个http请求是很正常的。
那么SAP的http请求代码如何写呢?下面是一个例子:
"实例化1个 IF_HTTP_CLIENT 的对象得到HTTP_CLIENT
CL_HTTP_CLIENT=>CREATE_BY_URL(
EXPORTING URL = S_URL "输入参数
IMPORTING CLIENT = HTTP_CLIENT ).
"设置某个特定的header field的值
HTTP_CLIENT->REQUEST->SET_HEADER_FIELD(
EXPORTING
NAME = '~SERVER_PROTOCOL'
VALUE = 'HTTP/1.1' ).
"设置某个特定的header field的值
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'CONTENT-TYPE'
VALUE = 'APPLICATION/XML'.
"设置某个特定的header field的值
HTTP_CLIENT->REQUEST->SET_HEADER_FIELD(
EXPORTING
NAME = 'ACCEPT'
VALUE = '*/*' ).
"设置http请求的方法GET 或者 POST
CALL METHOD HTTP_CLIENT->REQUEST->SET_METHOD( 'POST' ).
"设置http body
CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
EXPORTING
DATA = S_BODYDATA. "输入参数
"dispatch of data
CALL METHOD HTTP_CLIENT->SEND
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2.
"receipt of http response
CALL METHOD HTTP_CLIENT->RECEIVE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3.
"获取response中的http的body内容
S_RETURN = HTTP_CLIENT->RESPONSE->GET_CDATA( ). "执行结果
"关闭http链接
CALL METHOD HTTP_CLIENT->CLOSE.
上述代码是不是很枯燥?是
这是sap中abap代码的规范写法?逻辑是什么呢?
我觉得,sap的pa教材和官方help网站中并没有这样微观的给出,sap向www发送http请求的具体代码的规范,并没有。
我们还是逐句看看上述代码的含义吧。
- CL_HTTP_CLIENT=>CREATE_BY_URL()方法
在SE80中看到这个类的这个方法,右键查看这个方法的属性
看到上图,就相当于看到了java的api
我们再看看这个类本身的属性:这个类完全是SAP提供的
这个方法的输入参数是
方法的执行结果是得到了一个IF_HTTP_CLIENT对象的实例。