Вопрос по gwt, httprequest, java – GWT RequestBuilder - межсайтовые запросы

6

Я пытаюсь сделать межсайтовый запрос с помощью компоновщика запросов GWT, который я пока не могу заставить его работать. Как вы можете видеть, это большой пример проекта GWT, и я прошел черезhttps://developers.google.com/web-toolkit/doc/latest/tutorial/Xsite , Но я все еще что-то упускаю.

Я размещаю код здесь. Что мне не хватает ..?

package com.gwt.reqbuilder.client;

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.http.client.URL;
import com.google.gwt.user.client.Window;

public class GWTRequestBuilder implements EntryPoint
{
    private static final String JSON_URL = "http://localhost:8000/?q=ABC&callback=callback125";
    public void onModuleLoad()
    {
        GWTPOSTHTTP();
    }

    public void GWTPOSTHTTP()
    {
        String postUrl="http://localhost:8000";
        String requestData="q=ABC&callback=callback125";
        RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, postUrl);
        try {
            builder.sendRequest(requestData.toString(), new RequestCallback() 
            {
                public void onError(Request request, Throwable e) 
                {
                    Window.alert(e.getMessage());
                }
                public void onResponseReceived(Request request, Response response)
            {
                    if (200 == response.getStatusCode())
                    {
                        Window.alert(response.getText());
                    } else {
                        Window.alert("Received HTTP status code other than 200 : "+ response.getStatusText());
                    }
            }
            });
        } catch (RequestException e) {
            // Couldn't connect to server
        Window.alert(e.getMessage());
        }
    }
}

Ваш Ответ

2   ответа
5

На самом деле мы можем делать межсайтовые запросы из GWT RequestBuilder, если мы можем установить в заголовке ответа сервлета

Response.setHeader("Access-Control-Allow-Origin","http://myhttpserver");

Это работает Круто, если кому-то нужны проект GWT и сервлет Python, пожалуйста, дайте мне знать, я могу загрузить файлы.

GWT Client Code : https://github.com/manikandaraj/MLabs/tree/master/GWT/GWTClient
Error: User Rate Limit Exceeded Manikanda raj S
3

Вы пропустили чтение учебника.

Прямая цитата изруководство :

The RequestBuilder code is replaced by a call to the getJson method. So you no longer need the following code in the refreshWatchList method:

RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);

try {
  Request request = builder.sendRequest(null, new RequestCallback() {
    public void onError(Request request, Throwable exception) {
      displayError("Couldn't retrieve JSON");
    }

    public void onResponseReceived(Request request, Response response) {
      if (200 == response.getStatusCode()) {
        updateTable(asArrayOfStockData(response.getText()));
      } else {
          displayError("Couldn't retrieve JSON (" + response.getStatusText()
            + ")");
      }
    }
  });
} catch (RequestException e) {
  displayError("Couldn't retrieve JSON");
}

Что в целом является тем, что вы получили, и должно быть заменено функцией JSNI, приведенной в руководстве несколькими строками ниже:

  /**
   * Make call to remote server.
   */
  public native static void getJson(int requestId, String url,
      StockWatcher handler) /*-{
   var callback = "callback" + requestId;

   // [1] Create a script element.
   var script = document.createElement("script");
   script.setAttribute("src", url+callback);
   script.setAttribute("type", "text/javascript");

   // [2] Define the callback function on the window object.
   window[callback] = function(jsonObj) {
   // [3]
     [email protected]::handleJsonResponse(Lcom/google/gwt/core/client/JavaScriptObject;)(jsonObj);
     window[callback + "done"] = true;
   }

    ...
Error: User Rate Limit Exceeded

Похожие вопросы