2011-02-08 4 views
0

Я пытаюсь вызвать удаленный сервлет из GWT, на самом деле GWT-RPC не работает, поэтому я пытаюсь сделать это с помощью RequestBuilder.Вызов удаленного сервлета из GWT

Вот фрагмент кода:

String url = "http://some-remote-host:8888/GWTJSTest/SomeServlet?name=" + textBox.getText(); 
    RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, url); 
//    requestBuilder.setHeader("Origin", "*"); 
//    requestBuilder.setHeader("Access-Control-Allow-Origin", "*"); 
    try 
    { 
     requestBuilder.sendRequest(null, new RequestCallback() 
     { 
      public void onResponseReceived(Request request, Response response) 
      { 
       if (response.getStatusCode() == 200) 
       { 
        Window.alert(response.getText()); 
       }else 
       { 
        Window.alert(response.getText() + " : " + response.getStatusCode() + response.getStatusText()); 
       } 
      } 

      public void onError(Request arg0, Throwable arg1) 
      { 
       Window.alert(arg1.toString()); 

      } 
     }); 
    } catch (RequestException e) 
    { 
     Window.alert("CATCH BLOCK: " + e.getMessage()); 
     e.printStackTrace(); 
    } 

На самом деле, IE8 возвращает данные, но после того, как предупреждающее сообщение, но Firefox не делает! Почему это?

Как вы видите, я пытаюсь установить некоторые заголовки запросов, но никак.

+0

Вы не можете вызвать другие серверные методы, вы можете только лишь вызвать скриптовый сервер. Вы можете использовать сервлет-сервлет на своем сервере для вызова методов другого сервера. –

ответ

0

Я добавил: <add-linker name="xs" /> к .gwt.xml

А затем заменяет GWT-PRC на JsonpRequestBuilder (трансформирующий JSONP между сервером и клиентом)

0

Если вы пытаетесь сделать запрос на свой собственный сервер и порт (то же самое, что ваша страница GWT находится на), замените первую строку:

String url = "/GWTJSTest/SomeServlet?name=" + textBox.getText(); 

Если вы пытаетесь поговорить с другим сервером или другим портом на своем собственном сервере, Same Origin Policy не даст вам этого сделать. Вам нужно проксировать его с вашего собственного сервера.

0

Удаленный сервлет является тот, который нужно установить CORS заголовок, который у вас есть:

Access-Control-Allow-Origin: * 

В качестве альтернативы вы можете указать только свой собственный домен вместо *, если вы не хотите, чтобы другие домены, взаимодействующие с удаленный сервлет.

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