Toon posts:

[Java]: GWT return response server

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo iedereen,

Ik ben bezig een web applicatie te ontwikkelen met Google web tookit. De applicatie haalt wat informatie uit een mysql database (via aparte class) met een http request en zou het antwoord moeten doorgeven naar een andere method.

Mijn code zit er als volgt uit:

code:
1
2
3
4
5
6
7
//Here we call the method in the class request that will make the http request
String file = "postStatistics.php";
String type = "POST";
String requestData = null;
        
request object = new request();
parseResult(object.httpRequest(file, type, requestData));


code:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
//request class
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.Window;

public class request {
    
    private String messageXml;
    
    public String httpRequest(final String file, final String type, String requestData) {
        
        final String url = "http://localhost/bibliotheek/bibphp3/war/php/" + file;
        RequestBuilder builder = null;
        
        if(type == "GET") {
            builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url));
        }
        else if(type == "POST") {
            builder = new RequestBuilder(RequestBuilder.POST, URL.encode(url));
            
        }
        
        try {
            @SuppressWarnings("unused")
            Request request = builder.sendRequest(requestData, new RequestCallback() {

                public void onResponseReceived(Request request,Response response) {
                    if(response.getStatusCode() == 200) {
                        messageXml = response.getText();
                    }
                    else {
                        Window.alert("There was an error (1) :-( ");
                    }   
                }

                public void onError(Request request, Throwable exception) {
                    Window.alert("There was an error (2) :-(");
                }
            });
        }
        catch(RequestException e) {
            Window.alert("Could not connect to the server :-(");
        }
        
        return messageXml;
        
    }
}


Wanneer ik
code:
1
Window.alert(messageXml);
doe in de request class heb ik de juiste content, maar wanneer ik bijvoorbeeld
code:
1
 String str = object.httpRequest(file, type, requestData);
doe in de class waar ik de method oproep krijg ik null terug.

Weet iemand wat ik verkeerd doe? Dit is mijn eerste web app die ik ontwikkel met GWT. Ik heb al geprobeerd messageXml public te maken, maar dit maakt geen verschil.

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
In zo'n geval zou je er eens doorheen kunnen lopen met de debugger, kijken wat hij precies doet. Voor zover ik kan zien zal de httpRequest functie alleen null teruggeven in drie gevallen:

* Response.getStatusCode is niet 200
* Er gebeurt een exception die afgevangen wordt
* response.getText() geeft null terug.

Twee daarvan kun je uitsluiten als Window.alert in de code zelf afgevangen wordt.

Maar zoals gezegd, even stap voor stap met de debugger erdoorheen lopen en het zou duidelijk moeten worden welke 'paden' in je functie hij precies (niet) langsgaat.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
firebug geeft response code 200 aan en het juiste antwoord. Wanneer ik probeer een http request te maken in development mode geeft GWT een error terug. Wanneer ik de code compile en gewoon in the httpdocs folder plaats werk een http request wel. Enig idee hoe ik dit kan oplossen?