Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7188814
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2010-01-19 11:47:29

***SOAP方式调用WebService

REPORT  z_barry_http_soap_post LINE-SIZE 1023.

DATA: http_client TYPE REF TO if_http_client .
DATA: proxy_host TYPE string VALUE '10.99.60.203' ,
      proxy_port TYPE string VALUE '8080',
      proxy_user TYPE string ,
      proxy_pass TYPE string .
DATA: len TYPE i,
      len_str TYPE string  .
DATA: post_string TYPE string ,
      return_str TYPE string .

PARAMETERS: p_code(11) TYPE c OBLIGATORY DEFAULT '1381852'.
PARAMETERS: p_user(20) TYPE c .

START-OF-SELECTION .

  CONCATENATE ''
  '  ' xmlns:soap="
  ''
  '    IMPORTING
      text_buffer  = str
    TABLES
      binary_tab   = bin_tab.

  CALL METHOD http_client->close.
  WRITE return_str .
  WRITE / str.

 
***HTTP POST 方法
REPORT  z_barry_http_post LINE-SIZE 1023.
 
DATA: http_client TYPE REF TO if_http_client .
DATA: proxy_host TYPE string VALUE '10.99.60.203' ,
      proxy_port TYPE string VALUE '8080',
      proxy_user TYPE string ,
      proxy_pass TYPE string .
DATA: len TYPE i,
      len_str TYPE string  .
DATA: post_string TYPE string ,
      return_str TYPE string .
 
PARAMETERS: p_code(11) TYPE c OBLIGATORY DEFAULT '1381852'.
PARAMETERS: p_user(20) TYPE c .
 
START-OF-SELECTION .
  CONCATENATE 'mobileCode=' p_code '&userID=' p_user INTO post_string.
  len = STRLEN( post_string ) .
  len_str = len .
 
  CALL METHOD cl_http_client=>create
    EXPORTING
      host          = 'webservice.webxml.com.cn'
      service       = '80'
      scheme        = '1'
      proxy_host    = proxy_host
      proxy_service = proxy_port
    IMPORTING
      client        = http_client.
  http_client->propertytype_logon_popup = http_client->co_enabled .
 
*  CALL METHOD http_client->authenticate
*    EXPORTING
*      proxy_authentication = 'X'
*      username             = proxy_user
*      password             = proxy_pass.
 
  CALL METHOD http_client->request->set_header_field
    EXPORTING
      name  = '~request_method'
      value = 'POST'.
  CALL METHOD http_client->request->set_header_field
    EXPORTING
      name  = '~server_protocol'
      value = 'HTTP/1.1'.
  CALL METHOD http_client->request->set_header_field
    EXPORTING
      name  = '~request_uri'
      value = '/WebServices/MobileCodeWS.asmx/getMobileCodeInfo'.
  CALL METHOD http_client->request->set_header_field
    EXPORTING
      name  = 'Content-Type'
      value = 'application/x-www-form-urlencoded'.
  CALL METHOD http_client->request->set_header_field
    EXPORTING
      name  = 'Content-Length'
      value = len_str.
  CALL METHOD http_client->request->set_cdata
    EXPORTING
      data   = post_string
      offset = 0
      length = len.
  CALL METHOD http_client->send
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2.
  CALL METHOD http_client->receive
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3.
 
  return_str = http_client->response->get_cdata( ).
 
  CALL METHOD http_client->close.
 
  WRITE return_str.
阅读(16116) | 评论(8) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2011-05-16 12:45:57

呵呵,老白,我搞定了,代码如下: REPORT ZTEST_WEBSERVICE . PARAMETERS : uri(100) lower case default 'http://192.168.1.1:8181/ankur/testServlet' . DATA: Status_code(5), Status_text(300), Len type I, R_LEN TYPE I. DATA: t_request_header type table of sbcheader with header line, t_request_body type table of sbcbody with header line, t_request_body2 type table of ixbcmime with header line, t_response_header type table of sbcheader with header line, t_response_body type tabl

chinaunix网友2011-05-16 09:32:32

老白,请教一个HTTP_POST调用WEBSERVICE的问题: 我调用的服务是查询天气的webservice:http://webservice.webxml.com.cn/WebServices/WeatherWS. asmx/getWeather 调用函数时用:uri = 'http://webservice.webxml.com.cn/WebServices/WeatherWS. asmx/getWeather?theCityCode=2106&theUserID='。 CALL FUNCTION 'HTTP_POST' EXPORTING ABSOLUTE_URI = uri ..... 返回结果是,错误信息:请求格式无效: 。 如果换成HTTP_GET,返回结果是,错误信息: theUserID 我实际在webservice测试页面,是不需要输入theUerID参数的。 而如果由用把参数放到REQUEST_ENTITY_BODY方式, uri = 'http://webservic

chinaunix网友2011-03-02 10:24:50

请问下,我做了个简单的WebService,输入一个String参数,返回一个字符串, 然后我在sap里仿照你的程序做了一个,发现return_str是空的,没有将webservice应该返回的串返回回来啊,请问可能是何原因

chinaunix网友2010-03-31 13:26:42

CONCATENATE '' '' '' '' '' p_code '' '' p_user '' '' '' '' 这一坨总得超过255字节了吧?

chinaunix网友2010-03-30 16:09:30

博主的SOAP报文比较短,收发应该没有问题,如果报文超过255字节,不知道有什么好的办法解决,这个问题我自今没有解决,如有好的方法qq:49007952