JSON url重定向失败

时间:2016-05-05 14:12:03

标签: android json redirect android-asynctask url-redirection

我是JSON解析异步任务,当我使用URL http://example.com/json/note.json时它正在工作(使用免费的JSON托管服务,我保存后无法编辑)。但我的文件并未永久放在一个链接上。所以我使用URL重定向服务重定向新的JSON URL。当我使用网址重定向服务时,我的网址不会重定向到http://example.com/json/new_note.json

new JSONAsyncTask().execute("http://example.com/json/note.json"); //works

new JSONAsyncTask().execute("http://example.com/redirection_service_url"); //doesn't works

JSONAsyncTask

class JSONAsyncTask extends AsyncTask<String, Void, Boolean> {


        @Override
        protected void onPreExecute() {
            super.onPreExecute();


        }

        @Override
        protected Boolean doInBackground(String... urls) {
            arraylist = new ArrayList<HashMap<String, String>>();
            try {

                //------------------>>
                HttpGet httppost = new HttpGet(urls[0]);
                HttpClient httpclient = new DefaultHttpClient();
                HttpResponse response = httpclient.execute(httppost);

                 StatusLine stat = response.getStatusLine();
                int status = response.getStatusLine().getStatusCode();

                if (status == 200) {
                    HttpEntity entity = response.getEntity();
                    String data = EntityUtils.toString(entity);


                    JSONObject jsono = new JSONObject(data);
                    JSONArray jarray = jsono.getJSONArray("array");

                    for (int i = 0; i < jarray.length(); i++) {
                        HashMap<String, String> map = new HashMap<String, String>();
                        jsono = jarray.getJSONObject(i);
                        // Retrive JSON Objects

                        // Set the JSON Objects into the array
                        arraylist.add(map);

                    }

                    return true;
                } else {


                    Log.e("Error", "Something went wrong");
                }


                //------------------>>

            } catch (ParseException e1) {
                e1.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return false;
        }


        protected void onPostExecute(Boolean result) {

      if (result == false) {

                Toast.makeText(getApplicationContext(), "Unable to Fetch data from server", Toast.LENGTH_LONG).show();
            }

        }
    }

在浏览器中使用我的URL重定向服务URL显示我的JSON数据,我确保它没有错误。

请帮忙!

1 个答案:

答案 0 :(得分:0)

根据我的经验,即使方法是GET,Android也不支持重定向HTTP连接。

您应该获取HTTP响应并提取Location标头,然后再发出JSON有效负载请求。