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

1 篇文章 0 订阅

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


  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kete2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值