2

外部サーバーから JSON を取得することになっている GWT でアプリケーションを作成しています。私は使用してJsonpRequestBuilderいますが、これは JSON ではなく JSONP であるため、常に失敗 (タイムアウト) が発生します。

独自のサーバーがあれば、応答形式を (JSONP に) 変更できます。

動作させるために何を変更できますか?

Google Chrome のデバッガーで確認しました。onFailure応答を取得しますが、どういうわけかコードがメソッドに陥り、応答を使用できません。

String url = "http://api.mobile.endomondo.com/mobile/api/workout/list?authToken=XXXX";

JsonpRequestBuilder jsonp = new JsonpRequestBuilder();
jsonp.setTimeout(100000);
jsonp.setCallbackParam("callback");
 jsonp.requestObject(url,
     new AsyncCallback<TrainingData>() { // Type-safe!

       @Override
       public void onFailure(Throwable throwable) {
         // Easy to debug! (hopefully)
           Window.alert(throwable.getMessage());
       }
       @Override
       public void onSuccess(TrainingData trd) {
         // Success!
           //Window.alert("JSON obtained");
           Window.alert(trd.getEntries().toString());
         }
       });

編集今、私はカムを得ています

クロスサイト ホスト モードはまだ実装されていません。問題 http://code.google.com/p/google-web-toolkit/issues/detail?id=2079を参照してください

4

1 に答える 1

2

Maven と JBoss 7.2.0 を使用しています。ただし、必要に応じて、最小限の変更または変更なしで、Tomcat または他のコンテナーでこれを機能させることもできます。

dsmiley の httpproxy サーブレットを使用して実行しました: それをダウンロードしてビルドし、Maven リポジトリに追加します (または、pom.xml ファイルを忘れて、新しくビルドした jar をライブラリに追加します)。

pom.xml ファイルに依存関係を追加します。

   <dependency>
      <groupId>org.mitre.dsmiley.httpproxy</groupId>
      <artifactId>smiley-http-proxy-servlet</artifactId>
      <!-- 1.3-SNAPSHOT adds ability to handle spaces in paths, 1.2 works otherwise -->
      <version>1.3-SNAPSHOT</version>
   </dependency>

web.xml で、サーブレット マッピングを追加します。

   <servlet>
      <servlet-name>FirstResourceProxy</servlet-name>
      <servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class>
      <init-param>
         <param-name>targetUri</param-name>
         <param-value>http://targethost:port/and/root/path</param-value>
      </init-param>
      <init-param>
         <param-name>log</param-name>
         <param-value>true</param-value>
      </init-param>
   </servlet>
   <servlet-mapping>
      <servlet-name>FirstResourceProxy</servlet-name>
      <url-pattern>/firstResource/*</url-pattern>
   </servlet-mapping>

   <servlet>
      <servlet-name>SecondResourceProxy</servlet-name>
      <servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class>
      <init-param>
         <param-name>targetUri</param-name>
         <param-value>http://targethost:port/and/root/path</param-value>
      </init-param>
      <init-param>
         <param-name>log</param-name>
         <param-value>true</param-value>
      </init-param>
   </servlet>
   <servlet-mapping>
      <servlet-name>SecondResourceProxy</servlet-name>
      <url-pattern>/secondResource/*</url-pattern>
   </servlet-mapping>
于 2013-06-13T20:46:34.937 に答える