#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. Я все еще получаю ту же ошибку.