如何从以下方法检索文件:
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变量
答案 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请求。