0

GWT でクライアント側から XML ファイルにアクセスしようとしています。しかし、sendRequest メソッドがまったく起動されていないようです。

ブラウザでxmlを見ることができます。サーバー側で何かする必要がありますか?

どんな助けでも大歓迎です。

これが私のコードです

    String xmlurl = "http://localhost:8888/test.xml";
    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(xmlurl));

    try {
      Request request = builder.sendRequest(null, new RequestCallback() {
        public void onError(Request request, Throwable exception) {
            System.out.println(exception);
        }

        public void onResponseReceived(Request request, Response response) {
          if (200 == response.getStatusCode()) {
              System.out.println(response.getText());
          } else {
              System.out.println(response.getStatusCode());
          }
        }       
      });
    } catch (RequestException e) {
        System.out.println("exception"+e);  
    }

次のコードも試しましたが、同じ問題があります。開発者ツールは、応答ステータスを 200 として表示し、正しい応答テキストを表示します。ただ、コードでは機能しません。

       String xmlurl = "http://127.0.0.1:8888/test.xml";
       httpGetFile(xmlurl, new AsyncCallback<String>() {
        public void onFailure(Throwable caught) {
            xmlData = "Error";
        }

        public void onSuccess(String xmlText) {
            xmlData = xmlText;
        }
    });



   public static void httpGetFile(final String url, final AsyncCallback<String> callback) {
    final RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url);
    rb.setCallback(new RequestCallback() {
        public void onResponseReceived(Request request, Response response) {
            try {
                System.out.println("dafadfdf");
                final int responseCode = response.getStatusCode() / 100;
                if (url.startsWith("file:/") || (responseCode == 2)) {
                    callback.onSuccess(response.getText());
                } else {
                    callback.onFailure(new IllegalStateException("HttpError#" + response.getStatusCode() + " - " + response.getStatusText()));
                }
            } catch (Throwable e) {
                callback.onFailure(e);
            }
        }

        public void onError(Request request, Throwable exception) {
            callback.onFailure(exception);
        }
    });
    try {
        rb.send();
    } catch (RequestException e) {
        callback.onFailure(e);
    }
}
4

2 に答える 2

0

XML ファイルにアクセスするのに RequestBuilder はまったく必要ありません。これには ExternalTextResource を使用できます。

https://developers.google.com/web-toolkit/doc/latest/DevGuideClientBundle#TextResource

于 2013-01-08T18:50:16.827 に答える
0

System.out.print ステートメントの代わりに常にロギングを使用するhttps://developers.google.com/web-toolkit/doc/latest/DevGuideLogging

ステップ 1 - ロギング ステートメントを失敗、成功、および試行キャッチ ステートメントに追加します。例外をクリーンアップします。

ステップ 2 - 「XML の解析」は、rb コールバックの「onSuccess」メソッド内で実行する必要があります。

于 2013-01-09T17:19:35.630 に答える