是否可以调用 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 已死....