1

OracleでWebサービスにアクセスするためにsoap_apiメソッドを使用しています。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/using-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;

私が間違いを犯している場所を教えてください。

4

1 に答える 1

1

TNS が正しく設定されていないか、TNS サービスが実行されていません。これが、API が機能しない理由UTL_HTTPです (これは によって使用されSOAP_APIます)。

このリンクに従ってトラブルシューティングを行い、これを解決してください。

于 2012-09-20T17:01:36.947 に答える