2 Stimmen

GWT + Phonegap Cross-Domain-Anfragen funktionieren nicht.

Ich habe Probleme beim Erstellen von HTTP-Anfragen mit GWT 2.4 (und JQueryMobile jquery.mobile-1.0rc1.min.js, aber nicht für irgendwelche Anrufe) auf Phonegap 1.1.0. Was ich tun möchte, ist die POST-Methode auf einem anderen Server zu verwenden, um Inhalte zu empfangen und anzuzeigen.

Auf dem Desktop funktioniert es einwandfrei (dank einer Reverse-Proxy-Konfiguration). Auf Phonegap habe ich gelesen, dass "die Richtlinie zur Beschränkung von Quelldomänen keine Auswirkungen auf PhoneGap-Anwendungen hat. Da die HTML-Dateien von Webkit mit dem file://-Protokoll aufgerufen werden, gilt die Sicherheitsrichtlinie nicht.". Allerdings scheint die Anfrage auf dem Telefon nie gemacht zu werden, da die Antwort leer ist und der Statuscode 0 - ein ähnliches Verhalten, das ich zuvor hatte, bevor ich das Cross-Domain-Problem auf dem Desktop gelöst habe.

Ich verwende den normalen RequestBuilder in GWT, um meine Anfragen zu senden. Irgendwelche Ideen, warum das passiert? Alle Berechtigungen auf Phonegap sind aktiv.

Bearbeiten: Hier ist mein Java-Code, der die Anfrage sendet, aus dem ich meinen Soap-Envelope weggelassen habe:

    RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,url);
    rb.setHeader("SOAPAction", "assertIdentityWithSimpleAuthentication");
    rb.setHeader("Content-type", "application/x-www-form-urlencoded");

    String envelope = "etc"; //das ist mein Soap-Envelope

    try{
        rb.sendRequest(envelope, new RequestCallback() {
         public void onError(Request request, Throwable exception) {
             requestFailed(exception);
          }
         public void onResponseReceived(Request request, Response response) {
             if(response.getStatusCode() == 200){
                 String aid = Tools.parseMessage(response.getText(),"assertionId"); //das parst nur die Antwort, um den benötigten String zu erhalten
                 Window.alert("Erfolg: "+ aid);
                 sendAssertionID(aid); //und sendet ihn an eine andere Funktion
             }
             else setError(response);
          }
      });
      } 
        catch (RequestException ex) {
          requestFailed(ex);
      }

1voto

Daniel Kurka Punkte 7965

Überprüfen Sie Ihre URL. Ihr Code funktioniert einwandfrei auf meinen Android-Geräten, schlägt jedoch bei einer ungültigen URL mit dem Code 0 fehl.

Es muss mit http:// oder https:// beginnen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X