【问题标题】:FileNotFound Exception when getting JSON from a REST server in Android从 Android 中的 REST 服务器获取 JSON 时出现 FileNotFound 异常
【发布时间】: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。

【问题讨论】:

标签: android json rest


【解决方案1】:

我在这个例子中使用commons.io.2.4库,

显然我没有收到错误,因为您可以看到输出,

public static void main(String[] args) {
    try {

        URL url = new URL("http://eventoserver-ecinauce.rhcloud.com/songwol/services");
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.connect();

        String result = IOUtils.toString(connection.getInputStream());
        System.out.println(""+result);

    } catch (Exception e) {
        // TODO: handle exception
    }
}

输出

{
  "3": {
    "id": 3,
    "info": null,
    "name": "singer",
    "owner": 1,
    "packages": {},
    "reviews": {},
    "type": "performer"
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多