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

您根本不需要 RequestBuilder 来访问 XML 文件。您可以为此使用 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 回答