Вызов удаленного сервлета из GWT - PullRequest
0 голосов
/ 08 февраля 2011

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

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

    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 нет!Почему это так?

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

Ответы [ 3 ]

0 голосов
/ 10 февраля 2011

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

Access-Control-Allow-Origin: *

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

0 голосов
/ 12 февраля 2011

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

И затем заменил GWT-PRC на JsonpRequestBuilder (преобразовав JSONP между сервером и клиентом)

0 голосов
/ 10 февраля 2011

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

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

Если вы пытаетесьДля связи с другим сервером или с другим портом на вашем собственном сервере Одинаковая политика происхождения не позволит вам сделать это.Вам понадобится прокси-сервер с вашего собственного сервера.

...