【轉載】CL_HTTP_CLIENT的HTTP和SOAP用法示例
***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 ''
'http://www.w3.org/2001/XMLSchema-instance"'
' xmlns:xsd="http://www.w3.org/2001/XMLSchema"'
' xmlns:soap="'">http://schemas.xmlsoap.org/soap/envelope/">'
''
''">http://WebXml.com.cn/">'
'' p_code ''
'' 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_disabled.
* 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'.
CALL METHOD http_client->request->set_header_field
EXPORTING
name = 'Content-Type'
value = 'text/xml; charset=utf-8'.
CALL METHOD http_client->request->set_header_field
EXPORTING
name = 'Content-Length'
value = len_str.
CALL METHOD http_client->request->set_header_field
EXPORTING
name = 'SOAPAction'
value = 'http://WebXml.com.cn/getMobileCodeInfo'.
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.
CLEAR return_str .
return_str = http_client->response->get_cdata( ).
DATA : xstr TYPE xstring ,
str TYPE string ,
bin_tab TYPE STANDARD TABLE OF x255 ,
bin_len TYPE i.
xstr = http_client->response->get_data( ).
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = xstr
IMPORTING
output_length = bin_len
TABLES
binary_tab = bin_tab.
CALL FUNCTION 'SCMS_BINARY_TO_STRING'
EXPORTING
input_length = bin_len
mimetype = '"text/html; charset=utf-8"'
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.
相關文章
- 轉載golang中net/http包用法GolangHTTP
- 請教banq大哥SOAP和HTTPHTTP
- Web Service和SOAP以及HTTP的關係? .WebHTTP
- @Async的用法和示例
- HTTP和SOAP完全就是兩個不同的協議HTTP協議
- 瞭解下SOAP HTTP 協議HTTP協議
- Http get,post,soap協議的區別HTTP協議
- xargs的用法示例
- 關於 SAP ABAP CL_HTTP_CLIENT API 中的 SSL_ID 引數HTTPclientAPI
- (轉載)C++ ofstream和ifstream詳細用法C++
- Sanic response stream() 函式用法和示例函式
- Sanic response redirect() 函式用法和示例函式
- Sanic response raw() 函式用法和示例函式
- Sanic response file() 函式用法和示例函式
- Sanic response html() 函式用法和示例HTML函式
- Sanic response text() 函式用法和示例函式
- TryParse用法示例
- [轉載] Python中協程的詳細用法和例子Python
- HP-UX Glance的用法--轉載UX
- Sanic response json() 函式用法和示例JSON函式
- openat()函式的用法示例函式
- oracle的with函式用法示例Oracle函式
- go errgroup 用法示例Go
- SOAP和WebService真是垃圾。Web
- JS中陣列Array的用法{轉載}JS陣列
- C#中File 類的用法 轉載C#
- 轉載--常見hints的基礎用法
- Sanic response file_stream() 函式用法和示例函式
- SOAP(Simple Object Access Protocol) (轉)ObjectProtocol
- 靈活定義和處理SOAP頭訊息 (轉)
- Python的HTTP庫及示例PythonHTTP
- HP-UX TOP用法--轉載UX
- Demo示例——Bundle打包和載入
- [轉載] Oracle:start with...connect by子句的用法Oracle
- Http介面呼叫示例教程HTTP
- TCanvas中SaveDC和RestoreDC的用法 (轉)CanvasREST
- XML SOAP應用簡介 (轉)XML
- TCP/IP、HTTP、WEBSERVICE、SOAP、ICE都使用後才有感慨TCPHTTPWeb