Bonjour,

Je dois reproduire le comportement d'une page "Internet Explorer" depuis un applicatif Java lourd. Cette page IE fait un appel Ajax de cette façon :
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
 
var URL_ROUTER = "http://mnHost/maRessource/xxx";
var MSXMLDOM = "MSXML2.DOMDocument.4.0";
var XMLHTTP = "MSXML2.XMLHTTP.4.0";
 
try {                      
                var sReq = "<Request>blabla en XML avec des parametres et tout et tout.</Request>";
 
                var iHttpObj = new ActiveXObject(XMLHTTP);
                var iHttpReq = new ActiveXObject(MSXMLDOM);    
 
                iHttpReq.async=false;                                                 
                iHttpReq.loadXML(sReq);                                                      
 
                iHttpObj.Open("POST",URL_ROUTER, false);
                iHttpObj.Send(iHttpReq);                          
 
                alert(iHttpObj.responseText);
} catch(e) {
                alert("echec");
}
Pour se faire, j'ai utilisé la classe XmlHttpRequest de Jdesktop de cette façon :
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
        String URL_router = "http://mnHost/maRessource/xxx";
        String requestStr = "<Request>blabla en XML avec des parametres et tout et tout.</Request>";
        XmlHttpRequest request = new XmlHttpRequest();
 
        ByteArrayInputStream bais = new ByteArrayInputStream(requestStr
                .getBytes());
 
        Document doc = DocumentBuilderFactory.newInstance()
                .newDocumentBuilder().parse(bais);
 
        PropListener listener = new TestScripters().new PropListener();
        listener.setRequest(request);
        request.addOnReadyStateChangedListener(listener);
 
        request.open(Method.POST, new URL(URL_router), false);
 
        request.send(doc);
        SimpleDocument retDoc = request.getResponseXML();
        if (retDoc == null) {
 
            System.out.println("Le document retour est null");
        } else {
 
            System.out.println("Balise englobante : "
                    + retDoc.getDocumentElement().getNodeName());
        }
        String txt = request.getResponseText();
        if (txt == null) {
            System.out.println("Pas de texte retour");
        } else {
            System.out.println("Texte = " + txt);
        }
        String staTxt = request.getStatusText();
        if (staTxt == null) {
            System.out.println("Pas de status retour");
        } else {
            System.out.println("Status = " + staTxt);
        }
Le PropListener fait :
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
22
23
24
 
        private XmlHttpRequest request;
 
        public XmlHttpRequest getRequest() {
            return request;
        }
 
        public void setRequest(XmlHttpRequest aRequest) {
            request = aRequest;
        }
 
        public void propertyChange(PropertyChangeEvent aEvt) {
 
            System.out.println("Property " + aEvt.getPropertyName() + "="
                    + aEvt.getNewValue());
            if ("readyState".equals(aEvt.getPropertyName())) {
                if ("RECEIVING".equals(aEvt.getNewValue())
                        || "LOADING".equals(aEvt.getNewValue())) {
                    System.out.println("Status=" + request.getStatus());
                    System.out.println("Status=" + request.getStatusText());
                    System.out.println("Réponse=" + request.getResponseText());
                }
            }
        }
Au résultat j'obtiens :

Property readyState=OPEN
Property readyState=SENT
Le document retour est null
Texte =
java.lang.IllegalStateException: You cannot call getStatusText() unless readySta
te == RECEIVING || LOADING
at org.jdesktop.swingx.html.HttpRequest.getStatusText(HttpRequest.java:2
15)

Il semble donc que ma requete XmlHttpRequest ne cherche jamais à se mettre en réception de données. Bien entendu, dasn IE, je recois une lfux XML en sortie de ma requete.

Voyez-vous le mal quelque part ??

D'avance merci.