我正在使用soap_api 方法来访问oracle 中的Web 服务。当我创建 add_numbers 函数并执行 add_numbers 函数时,函数不会执行。在 select 语句中调用 web 服务时触发以下错误
select add_numbers(2,5) from dual
错误是
- ORA-29273: HTTP 请求失败
- ORA-06512:在“SYS.UTL_HTTP”,第 1029 行
- ORA-12541: TNS: 没有监听器
- ORA-06512:在“dbtest.SOAP_API”,第 144 行
- ORA-06512:在“dbtest.ADD_NUMBERS”,第 34 行 FROM!
我正在使用这个链接中的这个函数和soap_api方法。以http://www.oracle-base.com/articles/9i/sumption-web-services-9i.php#Top为例
用于调用 Web 服务的函数。
CREATE OR REPLACE FUNCTION add_numbers (p_int_1 IN NUMBER, p_int_2 IN NUMBER) RETURN NUMBER AS
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://192.168.0.75:9001/LicWebService.asmx';
l_namespace := 'xmlns="http://192.168.0.75:9001/"';
l_method := 'AddNum';
l_soap_action := 'http://192.168.0.75:9001/AddNum';
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 => 'int1',p_type => 'xsd:integer',p_value => p_int_1);
soap_api.add_parameter(p_request => l_request,p_name=> 'int2', p_type=> 'xsd:integer',p_value => p_int_2);
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);
END;
请建议我在哪里犯错。