междоменные запросы с GWT - PullRequest
1 голос
/ 03 марта 2012

Получение этой ошибки на Chrome при попытке сделать междоменные запросы с приложением GWT.

Origin http://127.0.0.1:8888 is not allowed by Access-Control-Allow-Origin.

Я пробовал следующий код для отправки запроса GET.

import com.google.gwt.core.client.EntryPoint;
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.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;


public class Detracker implements EntryPoint {
    public void onModuleLoad() {
        doGet("http://www.google.com");
    }

    public static void doGet(String url) {
        RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);

        try {
            builder.sendRequest(null, new RequestCallback() {
                public void onError(Request request, Throwable exception) {
                    // Code omitted for clarity
                }

                @Override
                public void onResponseReceived(Request request,
                        Response response) {
                    final Label msgLabel = new Label();
                    msgLabel.setText(response.getText());
                    RootPanel.get("resultContainer").add(msgLabel);
                }
            });

        } catch (RequestException e) {
            // Code omitted for clarity
        }
    }
}

Ответы [ 3 ]

2 голосов
/ 04 марта 2012

Используйте JSONP для междоменных запросов.(Но существуют некоторые ограничения - вы можете использовать только метод GET)

Другой способ - использовать сервлет GWT, чтобы получить результат запроса и вернуть его клиенту.Также существуют некоторые хаки с iframe, html5 также может делать междоменные запросы.

1 голос
/ 13 марта 2012

Я работал вокруг и вышел с этим рабочим решением.:)

String message = "";


try {
    URL url = new URL("working-url");
    URLConnection urlConn = url.openConnection();
    urlConn.setReadTimeout(100000);
    BufferedReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
    String line;

    while ((line = reader.readLine()) != null) {
        message = message.concat(line);
    }
    reader.close();

} catch (MalformedURLException e) {
message = e.getMessage();
} catch (IOException e) {
message = e.getMessage();
}
0 голосов
/ 05 марта 2012
...