ORA-29273: HTTP request failed
Bonjour,
Je n'arrive pas à faire fonctionner un petit programme que l'on trouve sur le NET afin d'additionner deux entiers à partir d'un appel web service (UTL_HTTP).
Je suis développeur et pas DBA ainsi que les privilèges nécessaires mais j'aimerais comprendre ce qui ne fonctionne pas.
Merci pour votre aide
paolo
PS : J'utilise Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production sur Sun Microsystems Inc. SunOS 5.10 Generic January 2005
Voici le bout de code :
Code:
1 2 3 4 5 6
| declare
l_number number;
begin
l_number := add_soap_numbers(1, 5);
dbms_output.put_line(l_number);
end; |
Voici l'erreur générée :
Citation:
anonymous block completed
Debug4:Error when invoking the request : ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1130
ORA-12541: TNS:no listener
Debug5:Error when returning the value : ORA-30625: method dispatch on NULL SELF argument is disallowed
2 pièce(s) jointe(s)
ORA-29273: HTTP request failed
Bonjour et merci pour ta réponse,
Oui, oui, je sais select 1+1 from dual...
Mais il s'agit d'un exemple que j'ai trouvé sur le NET (http://oracle-base.com/articles/10g/utl_dbws-10g.php) (voir aussi scripts en copie) que j'essaie de faire fonctionner car dans le cadre d'un projet de migration, je devrai accéder à des WS qui vont me retourner les data et que je devrai "parser"...
Pour revenir à mon exemple de test, la fonction "add_soap_numbers()" et le package "pck_soap_api" compilent bien mais à l'exécution Oracle me retourne une erreur (voir ci-dessous)
Encore merci pour votre réaction
paolo
Code:
1 2 3 4 5 6
| declare
l_number number;
begin
l_number := add_soap_numbers(1, 5);
dbms_output.put_line(l_number);
end; |
Citation:
anonymous block completed
Debug4:Error when invoking the request : ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1130
ORA-12541: TNS:no listener
Debug5:Error when returning the value : ORA-30625: method dispatch on NULL SELF argument is disallowed
ORA-29273: HTTP request failed
Merci pour l'info
Oui, notre DBA a bien donné les accès dans l'ACL
"....Means that we have to set ACL for the HTTP connection you are using and I set it like this..."
ACL PRINCIPAL PRIVILEGE IS_GRANT INVER
----------------------------------- ----------------------------------- --------------- --------------- -----
/sys/acls/http_access.xml myUser resolve true false
/sys/acls/http_access.xml myUser connect true false
De plus j'ai exécuté un autre exemple d'appel WS http://www.experts-exchange.com/Data...rom-PLSQL.html
Mais j'ai encore ce genre d'erreur:
Error report -
ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1130
ORA-12541: TNS:no listener
ORA-06512: at line 29
29273. 00000 - "HTTP request failed"
*Cause: The UTL_HTTP package failed to execute the HTTP request.
*Action: Use get_detailed_sqlerrm to check the detailed error message.
Fix the error and retry the HTTP request.
[11gR2] ORA-29273: HTTP request failed
Merci mnitu,
Je vois que vous avez fait fonctionner l'exemple mais je ne comprends pas ce que vous entendez par "J'ai du justement ajouter le proxy via utl_http.set_proxy". S'agit-il d'une commande que l'on doit ajouter dans la configuration de l'ACL ou alors directement dans le code PL/SQL invoquant le WS
PS:Je n'ai pas les droits DBA pour paramétrer la config (chose que je dois demander)
[11gR2] ORA-29273: HTTP request failed
Merici mnitu pour les explications, maintenant je comprends mieux.
Notre DBA vient de me donner les explications, il a bien configuré l'ACL pour les appels WS en iterne seulement pour l'institution mais pas pour l'Internet (voir message ci-dessous).
Ce que je voulais c'était juste faire fonctionner un exemple d'appel WS en attendant que les développeurs Java déploient leur solution en DEV.
Mais maintenant c'est beaucoup plus clair pour moi maintenant.
Encore un grand merci pour votre aide
Citation:
12541, 00000, "TNS:no listener"
// *Cause: The connection request could not be completed because the listener
// is not running.
// *Action: Ensure that the supplied destination address matches one of
// the addresses used by the listener - compare the TNSNAMES.ORA entry with
// the appropriate LISTENER.ORA file (or TNSNAV.ORA if the connection is to
// go by way of an Interchange). Start the listener on the remote machine.
So as you can see it's related to the fact that your code is trying to reach a DB (hoping it's a DB because you are more trying to reach a WEB URL … ) for which the listener is not running.
What I think is that this problem is more related to the WEB URL given in your code which is not the good one, you should not use oracle-base.com -> I guess this was an example but you have to use a EC internal Web URL to connect to.