您的位置:首页 > 理论基础 > 计算机网络

ABAP利用HTTP调用要用户验证的web service

2015-05-18 13:26 183 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: