ABAP调用web service的常用方式有两种,
一、采用proxy object调用,步骤如下:
1.sm59创建remote destination
2.sproxy创建proxy object
3.创建端口
4.代码调用
配置参见:http://saphelp.me/abap-proxy-client-server/
调用参见:http://2006057145.blog.163.com/blog/static/174722202201142810414591/
二、采用http方式调用
1.sm59创建remote destination
2.代码调用
REPORT ZWS_HTTPCLIENT_TEST.
DATA:p_client TYPE REF TO IF_HTTP_CLIENT.
DATA:p_data TYPE string.
CALL METHOD cl_http_client=>CREATE_BY_DESTINATION
EXPORTING
DESTINATION = 'TEST'
IMPORTING CLIENT = p_client
EXCEPTIONS ARGUMENT_NOT_FOUND = 1
DESTINATION_NOT_FOUND = 2
DESTINATION_NO_AUTHORITY = 3
INTERNAL_ERROR = 5.
rem 此处是传递身份认证的信息
CALL METHOD p_client->request->set_header_field
EXPORTING name = 'Username' VALUE = '3'
.
CALL METHOD p_client->request->set_header_field
EXPORTING
name = 'Password' VALUE = '1'
.
CALL METHOD p_client->request->set_header_field
EXPORTING
name = 'soapAction' VALUE = ''.
rem 此处为关键点,有些ws服务端只限制提交text/xml的请求,这与服务端的content-type定义有关
CALL METHOD p_client->request->set_header_field
EXPORTING
name = 'Content-Type' VALUE = 'text/xml'
.
rem 此处允许采用soap header方式进行验证,用户验证取决于ws服务端
CONCATENATE
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bar="http://barcode.wsservices.com.cn/">'
' <soapenv:Header>'
' <wse:CredentialSoapHeader xmlns:wse="http://handler.sws.com/">'
' <wse:Username>3</wse:Username>'
' <wse:Password>1</wse:Password>'
' </wse:CredentialSoapHeader>'
' </soapenv:Header>'
' <soapenv:Body>'
' <bar:test>'
' <Criteria>'
' <barcodeType>01</barcodeType>'
' <numbers>11</numbers>'
' </Criteria>'
' </bar:test>'
' </soapenv:Body>'
'</soapenv:Envelope>'
into p_data.
CALL METHOD p_client->request->SET_CDATA
EXPORTING DATA = p_data.
CALL METHOD cl_http_utility=>set_request_uri
EXPORTING
request = p_client->request
uri = '/WSServer/WS-Security/barcode/BarcodeService'.
CALL METHOD p_client->request->set_header_field
EXPORTING
name = '~server_protocol'
VALUE = 'HTTP/1.0'.
CALL METHOD p_client->send
EXPORTING
timeout = 30
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
http_invalid_timeout = 4
OTHERS = 5.
CALL METHOD p_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3
OTHERS = 4.
CALL METHOD p_client->response->GET_CDATA
receiving DATA = p_data.
CALL METHOD p_client->close.
WRITE : p_data.
调用参见:http://wenku.baidu.com/view/ab3fd83e5727a5e9856a6170.html