Как вызвать веб-сервис soap через PLSQL

#web-services #soap #plsql

#веб-сервисы #soap #plsql

Вопрос:

Вот моя ссылка на веб-сервис

 http://83.143.26.34/MMWebService/MMWebSrv.asmx?WSDL
  

Я хочу вызвать метод sendTextMessage через PLSQL. Может ли кто-нибудь мне помочь?

Вот код plsql, который я использовал. Я получаю исключение с истекшим временем ожидания. Но это было нормально через SOAP-UI.

 declare
  l_request     soap_api.t_request;
  l_response    soap_api.t_response;
  l_return      VARCHAR2(32767);
  l_url         VARCHAR2(32767);
  l_namespace   VARCHAR2(32767);
  l_method      VARCHAR2(32767);
  l_soap_action VARCHAR2(32767);
  l_result_name VARCHAR2(32767);

BEGIN

  l_url         := 'http://83.143.26.34:4000/MMWebService/MMWebSrv.asmx';
  l_namespace   := 'xmlns:ser="urn:MMWebSrvService"';
  l_method      := 'SendTextMessage';
  l_soap_action := l_url || '/' || l_method;
  l_result_name := 'return';
  l_request     :=  soap_api.new_request(p_method    => l_method,
                                             p_namespace => l_namespace);
  soap_api.add_parameter(p_request => l_request,
                              p_name    => 'strUsername',
                              p_type    => 'xsd:string',
                              p_value   => 'BIHL');
   soap_api.add_parameter(p_request => l_request,
                              p_name    => 'strPassword',
                              p_type    => 'xsd:string',
                              p_value   => 'monday@123');
   soap_api.add_parameter(p_request => l_request,
                              p_name    => 'strFrom',
                              p_type    => 'xsd:string',
                              p_value   => 'UserFrom');
   soap_api.add_parameter(p_request => l_request,
                              p_name    => 'strTo',
                              p_type    => 'xsd:string',
                              p_value   => '74747574');
    soap_api.add_parameter(p_request => l_request,
                               p_name    => 'strMessage',
                               p_type    => 'xsd:string',
                               p_value   => 'UserMsg');
   soap_api.add_parameter(p_request => l_request,
                              p_name    => 'strSubject',
                              p_type    => 'xsd:string',
                              p_value   => 'UserSub');
   soap_api.add_parameter(p_request => l_request,
                              p_name    => 'strService',
                              p_type    => 'xsd:string',
                              p_value   => 'UserSrv');
   soap_api.add_parameter(p_request => l_request,
                              p_name    => 'nOptions',
                              p_type    => 'xsd:int',
                              p_value   => 10);
   soap_api.add_parameter(p_request => l_request,
                              p_name    => 'strTimeToSend',
                              p_type    => 'xsd:string',
                              p_value   => sysdate);
   soap_api.add_parameter(p_request => l_request,
                              p_name    => 'strReference',
                              p_type    => 'xsd:string',
                              p_value   => 'UserRef');
   soap_api.add_parameter(p_request => l_request,
                              p_name    => 'strBillText',
                              p_type    => 'xsd:string',
                              p_value   => 'UserTxt');
   soap_api.add_parameter(p_request => l_request,
                              p_name    => 'strSessionID',
                              p_type    => 'xsd:string',
                              p_value   => 'UserSID');

  l_response :=  soap_api.invoke(p_request  => l_request,
                                     p_url      => l_url,
                                     p_action   => l_soap_action);

  l_return := soap_api.get_return_value(p_response  => l_response,
                                             p_name      => l_result_name,
                                             p_namespace => NULL);

EXCEPTION
  WHEN OTHERS THEN
    pkg_pub_scd_ci.p_log_error('webservice to send a message' || ' -- ' ||
                               sqlerrm ||
                               dbms_utility.format_error_backtrace);
end;
  

Комментарии:

1. Возможно, стоит упомянуть, откуда вы получили пакет soap_api, я предполагаю, что это один: oracle-base.com/dba/miscellaneous/soap_api.sql Единственная проблема, которую я вижу до сих пор, заключается в том, что вы получаете WSDL, используя порт 80, в то время как вы пытаетесь вызвать веб-сервис на порту 4000, разве это тоже не должно быть 80?

2. Да, ErikL. Я получил пакет, о котором вы упомянули только. Я получил ту же ошибку, что и при попытке с номером порта 80. Я все еще получаю ту же ошибку.