1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
REPORT YTEST_TNT_V3.
CLASS cl_ixml DEFINITION LOAD.
DATA: response TYPE string.
DATA: g_ixml TYPE REF TO if_ixml.
DATA: g_stream_factory TYPE REF TO if_ixml_stream_factory.
DATA: headfields TYPE tihttpnvp.
DATA: client TYPE REF TO if_http_client,
host TYPE string, port TYPE string,
proxy_host TYPE string, proxy_port TYPE string,
path TYPE string, scheme TYPE i.
DATA: wf_user TYPE string .
DATA: wf_password TYPE string ,
if_query_field TYPE LINE OF tihttpnvp,
it_query_field TYPE tihttpnvp,
if_query TYPE string.
DATA: cx_runtime_error TYPE REF TO cx_xslt_runtime_error.
DATA: cx_format_error TYPE REF TO cx_xslt_format_error.
DATA: err_text TYPE string.
* La structure qui receptionne les données du XML doit être définie en
* local dans la routine (je ne sais pas pourquoi)
TYPES: BEGIN OF typ_xml,
codepostal(10),
ville(50),
END OF typ_xml.
DATA: lt_xml TYPE STANDARD TABLE OF typ_xml,
ls_xml TYPE typ_xml,
source_xml TYPE string,
lt_result_xml TYPE abap_trans_resbind_tab,
ls_result_xml TYPE abap_trans_resbind.
data: begin of TAB_CONVERTED_DATA occurs 0,
data1(250) type c,
end of TAB_CONVERTED_DATA.
data w_length type i.
data w_tot type i.
data w_write type i.
data w_calc type i.
data ref_document tYPE REF TO IF_IXML_DOCUMENT.
START-OF-SELECTION.
*Setting the parameters needed by the object
concatenate 'http://www.tnt.fr/public/relaiscolis/rechercheCommuneXML'
'.do?code=69' into host.
port = '80'.
* proxy_host = '192.168.1.254'.
* proxy_port = '8080'.
* scheme = 1. "1=HTTP 2=HTTPS
*
* CALL METHOD cl_http_client=>create_by_url
* EXPORTING
* url = host
* proxy_host = proxy_host
* proxy_service = proxy_port
* IMPORTING
* client = client.
*
** Envoi user/password du proxy
* client->propertytype_logon_popup = client->co_disabled.
*
* wf_user = 'xxxxxx' .
* wf_password = 'zzzz'.
*
** proxy server authentication
*
* CALL METHOD client->authenticate
* EXPORTING
* proxy_authentication = 'X'
* username = wf_user
* password = wf_password.
CALL METHOD client->request->set_header_field
EXPORTING
name = '~request_method'
value = 'POST'.
***
* send & receive
client->send( ).
client->receive( ).
* Capture the result data
response = client->response->get_cdata( ).
* VERY IMPORTANT: close your connection
client->close( ).
**
clear lt_result_xml.
GET REFERENCE OF lt_xml INTO ls_result_xml-value.
ls_result_xml-name = 'ENREG'.
APPEND ls_result_xml TO lt_result_xml.
TRY.
CALL TRANSFORMATION YTEST
SOURCE XML response
RESULT (lt_result_xml).
CATCH cx_xslt_runtime_error INTO cx_runtime_error.
WRITE :/ 'kernel_errid = ', cx_runtime_error->kernel_errid.
err_text = cx_runtime_error->get_text( ).
WRITE :/ 'text = ', err_text.
CATCH cx_xslt_format_error INTO cx_format_error.
WRITE :/ 'kernel_errid = ', cx_format_error->kernel_errid.
err_text = cx_format_error->get_text( ).
WRITE :/ 'text = ', err_text.
CLEANUP.
WRITE :/ 'passage par cleanup'.
endtry.
LOOP AT lt_xml INTO ls_xml.
WRITE: / sy-tabix, ls_xml-codepostal, ls_xml-ville.
ENDLOOP. |
Partager