2013-11-10 2 views
-1

Я создал очень простой сервлет, который использует метод HTTP Post. Я протестировал его на локальном сервере Apache Tomcat, используя простую HTML-форму, которая работает. Я хочу интегрировать его с моим приложением GWT. Я могу назвать его с помощью FormPanel - в этом случае он загружает контент, и в моем окне браузера появляется мерцание.GWT RequestBuilder Post Response return 0 StatusCode

Я знаю, что мне нужно использовать RequestBuilder для доступа к нему. Но мой response.getStatusCode() в моей перегруженной общественной пустоте onResponseReceived (Request запрос, ответ Response) метод всегда возвращает статус 0 и response.getText() возвращают нулевое

String url = "http://localhost:8080/servlets/servlet/ShapeColor"; 
    builder = new RequestBuilder(RequestBuilder.POST, URL.encode(url)); 


    try { 
     String json = getJSONString(); 
     //builder.setTimeoutMillis(10000); 
     builder.setHeader("Access-Control-Allow-Origin", "*"); 


     builder.setHeader("Content-type", "application/x-www-form-urlencoded"); 
     builder.sendRequest(json, new RequestCallback() { 

      @Override 
      public void onError(Request request, Throwable exception) { 
       Window.alert("Couldn't retrieve JSON"); 
      } 

      @Override 
      public void onResponseReceived(Request request, Response response) { 
       if (200 == response.getStatusCode()) { 
       System.out.println("res:"+response.getText()); 
       } else { 
        System.out.println("err: " + response.getStatusCode()+","+response.getText()); 
       } 
      } 
      }); 
     //Request response = builder.send(); 

    } catch (RequestException e) { 
     // TODO Auto-generated catch block 

    } 

Я пробовал многие вещи, включая изменение моего сервлета (https://code.google.com/p/gwtquery/wiki/Ajax#CORS_%28Cross_Origin_Resource_Sharing%29)

Он всегда работает в браузере, используя мой test.html, но не из моего приложения. Хотя, onResponseReceived метод всегда вызывается

Спасибо

КОГО

ответ

0

Вы проверили, если ваш вызов в приложении нарушает политику единства происхождения (http://en.wikipedia.org/wiki/Same-origin_policy) в некотором роде? GWT RequestBuilder использует XMLHttpRequest внутренне, поэтому он попадает под SOP.

Выполняется ли ваше приложение GWT внутри одного домена (сервер + порт) в качестве сервлета? Использует ли он тот же протокол (https или http)?

Смежные вопросы