jdev version: 10.1.2.3.0
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
TNS for Linux: Version 10.2.0.4.0 - Production
Bonjour,
J'ai suivit un tutorial pour contacter un webservcie à l'aide de forms.
http://www.oracle.com/technology/obe...webservice.htm
Pour ma part, je doit passé à travers un proxy firewall
Voici le code jdev de manière à passé le proxy:
Voici l'erreur que je reçois à l'execution du trigger appelant le webservice:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public class PrimeNumbersStubnew extends WrappedDocLiteralStub { public PrimeNumbersStubnew() { m_httpConnection = new OracleSOAPHTTPConnection(); Properties props = new Properties(); props.put(OracleSOAPHTTPConnection.PROXY_HOST, "10.0.2.21"); props.put(OracleSOAPHTTPConnection.PROXY_PORT, "8070"); props.put(OracleSOAPHTTPConnection.PROXY_AUTH_TYPE, "basic"); props.put(OracleSOAPHTTPConnection.PROXY_USERNAME, "XXXXX"); props.put(OracleSOAPHTTPConnection.PROXY_PASSWORD, "XXXXX"); m_httpConnection.setProperties(props); } private String _endpoint = "http://www50.brinkster.com/vbfacileinpt/np.asmx"; ....
Le serveur proxy me dit que les credentials ne sont pas correct, pourtant je suis sur qu'ils le sont.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Exception: java.lang.Exception: [SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type "text/html; charset=utf-8", must be: "text/xml". Response was: <HTML><HEAD> <TITLE>Access Denied</TITLE> </HEAD> <BODY> <FONT face="Helvetica"> <big><strong></strong></big><BR> </FONT> <blockquote> <TABLE border=0 cellPadding=1 width="80%"> <TR><TD> <FONT face="Helvetica"> <big>Access Denied (authentication_failed)</big> <BR> <BR> </FONT> </TD></TR> <TR><TD> <FONT face="Helvetica"> Your credentials could not be authenticated: "Credentials are missing.". You will not be permitted access until your credentials can be verified. ...
Après quelques test je suis arrivé sur quelque chose d'étrange:
Que j'écrive:
Ou cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Properties prop = new Properties(); prop.setProperty(OracleSOAPHTTPConnection.PROXY_HOST, "10.0.2.21"); prop.setProperty(OracleSOAPHTTPConnection.PROXY_PORT,"8070"); prop.put(OracleSOAPHTTPConnection.PROXY_AUTH_TYPE, "basic"); prop.put(OracleSOAPHTTPConnection.PROXY_USER, "XXXXX"); prop.put(OracleSOAPHTTPConnection.PROXY_PASS, "XXXXX"); m_httpConnection = new OracleSOAPHTTPConnection(prop);
Le résutat est le même, c'est comme si il ne passait pas le username et le mot de pass.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Properties prop = new Properties(); prop.setProperty(OracleSOAPHTTPConnection.PROXY_HOST, "10.0.2.21"); prop.setProperty(OracleSOAPHTTPConnection.PROXY_PORT,"8070"); m_httpConnection = new OracleSOAPHTTPConnection(prop);
Et finalmement j'ai tester avec ce code si:
Code qui fonctionne car grâce à la propriété ALLOW_USER_INTERACTION, il me demande le user, le pass et tout fonctionne correctement ensuite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Properties prop = new Properties(); prop.setProperty(OracleSOAPHTTPConnection.ALLOW_USER_INTERACTION,"true"); prop.setProperty(OracleSOAPHTTPConnection.PROXY_HOST, "10.0.2.21"); prop.setProperty(OracleSOAPHTTPConnection.PROXY_PORT,"8070"); m_httpConnection = new OracleSOAPHTTPConnection(prop);
Grace à cette propriété, j'ai remarqué qu'il passait par un Realm.
Realm que j'ai ajouté à mon code et qui ne change rien du tout.
Voici les ecrans que la prop ALLOW_USER... a fait apparaitre:
(Cette solution ne peut pas fonctionné de mon coté car au final, l'application tournera sur un serveur à disposition de l'extérieur)
Pourquoi lorsque je le passe à l'aide des propriété de la connexion cela ne marche pas??
Merci d'avance
Partager