0

endomondo から JSON 形式でデータを取得したい GWT アプリケーションがあり、次の IRL で取得できます。

http://api.mobile.endomondo.com/mobile/api/workout/list?authToken=XXXXXXXXXX

そして、私は次のようなデータを取得します

{"data":[{"duration_sec":2710,"sport":0,"speed_kmh_avg":11.721935764889876,"device_workout_id":"6588152507813057122","feed_id":155634169,"sport2":0,"id":192960126,"altitude_m_max":227.3,"hydration":0.35771,"altitude_m_min":145.5,"has_playlist":false,"burgers_burned":1.075926,"start_time":"2013-05-21 18:57:04 UTC","calories":581,"speed_kmh_max":26.281,"distance_km":8.824012756347656,"has_points":true},]}

しかし、どういうわけかこれをGWT http request builderで呼び出すことはできません。コードの何を変更すればよいですか?

String url = "http://api.mobile.endomondo.com/mobile/api/workout/list?authToken=XXXXXXXXXX";
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);


try {
      Request myrequest = builder.sendRequest(null, new RequestCallback() {

        public void onError(Request request, Throwable exception) {
           // Couldn't connect to server (could be timeout, SOP violation, etc.)

        }

        public void onResponseReceived(Request request, Response response) {
          if (200 == response.getStatusCode()) {
              trainingsJSON = JSONParser.parseStrict(response.getText());
              trainingsString = response.getText();
            Label l = new Label();
            l.setText("200 erros status code JSON DATA from endomondo " + response.getText()) ;

            RootPanel.get().add(l);
          } else {
            // Handle the error.  Can get the status text from response.getStatusText()
                Label l = new Label();
                l.setText("JSON DATA from endomondo 3rror part " + response.getText()) ;

                RootPanel.get().add(l);                   
          }
        }       
      });
    } catch (RequestException e) {
      // Couldn't connect to server        
    }

編集

追加してみました

builder.setHeader("Access-Control-Allow-Origin", "*");

しかし運がない。

4

1 に答える 1

2

GWT で CORS リクエストを作成する場合、リクエストにヘッダーを追加する必要はありません。あなたがしなければならないことは、サーバーがサイトからの CORS リクエストをサポートしていることを確認することです。

サイトを管理しているhttp://api.mobile.endomondo.com場合は、クライアントがリクエストを送信したときに適切な CORS ヘッダーを返すようにサーバー コードを変更する必要がありますOPTION

Java サーバー側の場合、このページFilter.

CORS は最新のブラウザーでのみ機能することに注意してください (編集済み: 実際には、特定のブラウザーの古いバージョンでサポートされています。以下の @Thomas コメントのブラウザーのリストを参照してください)。

于 2013-06-13T05:39:08.017 に答える