【发布时间】:2015-12-15 05:48:36
【问题描述】:
我在从 REST 服务器获取 JSON 数据时遇到问题。网络浏览器正确返回JSON数据here,但下面的代码会导致FileNotFound异常:
private void getJSON(String url) {
class GetJSONServices extends AsyncTask<String, Void, String> {
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = new ProgressDialog(ServicesActivity.this);
loading.setTitle("");
loading.setMessage("Getting your services...");
loading.setCancelable(false);
loading.show();
}
@Override
protected String doInBackground(String... params) {
String uri = params[0];
BufferedReader bufferedReader = null;
try {
URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
StringBuilder sb = new StringBuilder();
bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String json;
while((json = bufferedReader.readLine())!= null){
sb.append(json+"\n");
}
return sb.toString().trim();
}catch(Exception e){
Log.e("Do In Background", getStackTrace(e));
return null;
}
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
try {
JSONObject jsonObject = new JSONObject(s);
Toast.makeText(ServicesActivity.this, s, Toast.LENGTH_SHORT).show();
}
catch (Exception e) {
Log.e("On Post Execute", getStackTrace(e));
}
}
}
GetJSONServices gj = new GetJSONServices();
gj.execute(url);
}
另外,AndroidManifest.xml 有 INTERNET 权限,REST 服务器允许 CORS。是什么导致了这个错误,我该如何解决?
编辑:我使用的是 HttpURLConnection,而不是删除的 HttpClient。
【问题讨论】:
-
sb.toString()的输出是什么?