是否可以调用 URL 传递网站参数?
Is it possible to call an URL passing website parameters?
我正在为有关某些供应商信息的自定义 SAP 程序编写代码。在我的程序流程中,我可能会尝试使用属于未知供应商的供应商增值税号。有一个网站(基于欧盟 - https://ec.europa.eu/taxation_customs/vies/)用于此类目的,需要国家密钥和指定的增值税号,以便它提供可用公司信息的答案(当然仅适用于公司增值税号).我的问题是,我似乎无法找到任何方法将这些参数动态传递到网站,而无需用户在此过程中进行干预。手动,该过程将是 select 国家键,输入增值税号并按 'Verify'。
我有什么方法可以调用这个特定的网站 URL 并“绕过”这个过程只显示结果页面吗?目前,我正在使用以下功能模块来调用指定的 URL,没有更好的选择。
call function 'CALL_INTERNET_ADRESS'
exporting
pi_adress = 'https://ec.europa.eu/taxation_customs/vies/'
exceptions
no_input_data = 1
others = 2.
您可以使用 CL_HTTP_CLIENT class 或 HTTP_POST/HTPP_GET FM。
您需要使用 STRUST t 代码将给定网页 SSL 根证书安装到您的系统。
下面是 CL_HTTP_CLIENT 的用法示例。
DATA: lv_url TYPE string VALUE 'http://mkysoft.com/ip.php'.
DATA: o_client TYPE REF TO if_http_client.
DATA: lv_http_rc TYPE i.
DATA: lv_reason TYPE string.
DATA: lt_fields TYPE tihttpnvp.
TRY.
cl_http_client=>create_by_url( EXPORTING
url = lv_url
IMPORTING
client = o_client
EXCEPTIONS
OTHERS = 0 ).
o_client->request->get_header_fields( CHANGING fields = lt_fields ).
o_client->request->set_header_field( name = '~request_uri' value = '/ip.php' ).
o_client->request->set_header_field( name = '~host' value = 'mkysoft.com' ).
o_client->request->set_method( if_http_request=>co_request_method_get ).
o_client->send( ).
o_client->receive( ).
o_client->response->get_status( IMPORTING
code = lv_http_rc
reason = lv_reason ).
* Error check
IF lv_http_rc = 200.
DATA(lv_xml) = o_client->response->get_cdata( ).
* Handle error
ELSE.
WRITE: / 'Fehler: ', lv_http_rc.
ENDIF.
o_client->close( ).
CATCH cx_root INTO DATA(e_txt).
WRITE: / e_txt->get_text( ).
ENDTRY.
欧盟委员会提供增值税号的 SOAP 服务。
查看信息页面
https://ec.europa.eu/taxation_customs/vies/technicalInformation.html
而且它甚至支持 http
http://ec.europa.eu/taxation_customs/vies/checkVatTestService.wsdl
你有一个非屏幕 scrape 方法,你应该看看正确的界面。
关于避免 SSL 的另一点。
为客户制作一个基本指南,将欧盟委员会证书添加到他们的 SAP 系统中。如果有人对此抱怨,那么他们就是互联网的忠实用户。每个需要调用互联网的本地用户都会添加证书。
Http 已死....
我正在为有关某些供应商信息的自定义 SAP 程序编写代码。在我的程序流程中,我可能会尝试使用属于未知供应商的供应商增值税号。有一个网站(基于欧盟 - https://ec.europa.eu/taxation_customs/vies/)用于此类目的,需要国家密钥和指定的增值税号,以便它提供可用公司信息的答案(当然仅适用于公司增值税号).我的问题是,我似乎无法找到任何方法将这些参数动态传递到网站,而无需用户在此过程中进行干预。手动,该过程将是 select 国家键,输入增值税号并按 'Verify'。
我有什么方法可以调用这个特定的网站 URL 并“绕过”这个过程只显示结果页面吗?目前,我正在使用以下功能模块来调用指定的 URL,没有更好的选择。
call function 'CALL_INTERNET_ADRESS'
exporting
pi_adress = 'https://ec.europa.eu/taxation_customs/vies/'
exceptions
no_input_data = 1
others = 2.
您可以使用 CL_HTTP_CLIENT class 或 HTTP_POST/HTPP_GET FM。
您需要使用 STRUST t 代码将给定网页 SSL 根证书安装到您的系统。
下面是 CL_HTTP_CLIENT 的用法示例。
DATA: lv_url TYPE string VALUE 'http://mkysoft.com/ip.php'.
DATA: o_client TYPE REF TO if_http_client.
DATA: lv_http_rc TYPE i.
DATA: lv_reason TYPE string.
DATA: lt_fields TYPE tihttpnvp.
TRY.
cl_http_client=>create_by_url( EXPORTING
url = lv_url
IMPORTING
client = o_client
EXCEPTIONS
OTHERS = 0 ).
o_client->request->get_header_fields( CHANGING fields = lt_fields ).
o_client->request->set_header_field( name = '~request_uri' value = '/ip.php' ).
o_client->request->set_header_field( name = '~host' value = 'mkysoft.com' ).
o_client->request->set_method( if_http_request=>co_request_method_get ).
o_client->send( ).
o_client->receive( ).
o_client->response->get_status( IMPORTING
code = lv_http_rc
reason = lv_reason ).
* Error check
IF lv_http_rc = 200.
DATA(lv_xml) = o_client->response->get_cdata( ).
* Handle error
ELSE.
WRITE: / 'Fehler: ', lv_http_rc.
ENDIF.
o_client->close( ).
CATCH cx_root INTO DATA(e_txt).
WRITE: / e_txt->get_text( ).
ENDTRY.
欧盟委员会提供增值税号的 SOAP 服务。 查看信息页面 https://ec.europa.eu/taxation_customs/vies/technicalInformation.html
而且它甚至支持 http http://ec.europa.eu/taxation_customs/vies/checkVatTestService.wsdl
你有一个非屏幕 scrape 方法,你应该看看正确的界面。
关于避免 SSL 的另一点。 为客户制作一个基本指南,将欧盟委员会证书添加到他们的 SAP 系统中。如果有人对此抱怨,那么他们就是互联网的忠实用户。每个需要调用互联网的本地用户都会添加证书。 Http 已死....