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:

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";
....
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
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.
...
Le serveur proxy me dit que les credentials ne sont pas correct, pourtant je suis sur qu'ils le sont.

Après quelques test je suis arrivé sur quelque chose d'étrange:
Que j'écrive:
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);
Ou cela :
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);
Le résutat est le même, c'est comme si il ne passait pas le username et le mot de pass.

Et finalmement j'ai tester avec ce code si:
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);
Code qui fonctionne car grâce à la propriété ALLOW_USER_INTERACTION, il me demande le user, le pass et tout fonctionne correctement ensuite.
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