从java中的方法中检索数据

时间:2011-09-12 21:22:55

标签: java gwt

如何从以下方法检索文件:

public void getJson(String pathToFile) {
    String userUrl = DOMAIN_URL+pathToFile;
    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(userUrl));
    JSONArray outerJsonArray;
    try {
        Request request = builder.sendRequest(null, new RequestCallback() {
            public void onError(Request request, Throwable exception) {

            }
            public void onResponseReceived(Request request, Response response) {
                if (200 == response.getStatusCode()) {
                    try {
                        JSONValue jsonValue = JSONParser.parse(response.getText());
                        JSONArray jsonArray = jsonValue.isArray();
                        if (jsonArray != null) {

                        } else {
                            throw new JSONException();
                        }
                    } catch (JSONException e) {

                    }
                } else {

                }
            }
        });
    } catch (RequestException e) {

    }
}

现在它只是无效。我应该重新审视jsonArray变量

2 个答案:

答案 0 :(得分:0)

只需将声明更改为

即可

public JSONArray getJson(String pathToFile) {

行后

JSONArray jsonArray = jsonValue.isArray();

你可以添加

return jsonArray;

现在你必须要小心。显然,如果数组为null或读取期间发生错误,则会有一些错误检查条件。您可以设计如何处理它们:如果数组为null,您应该抛出异常还是返回空值?如果读取错误,是否应该抛出异常,打印错误或返回空值?这些是您的外部接口所要求的注意事项。

答案 1 :(得分:0)

你根本做不到。

请求是异步的,因此您的方法也必须是异步的(非阻塞)。您可以将类似AsyncCallback(重用现有接口)的内容传递给getJson方法,并让RequestCallback使用JSONArray将其调用回来。

从技术上讲,这是可能的,但GWT中的design choice不允许阻止AJAX请求。

Embrace asynchrony!