Android:AsyncHttpClient响应转到OnFailure

时间:2016-01-18 10:53:20

标签: android json parsing android-asynctask

我正在尝试解析URL中的数据。我在移动浏览器中测试的URL工作正常。我试图通过 AsyncHttpClient 解析数据。之后执行 onFailure 方法。

在依赖项中添加

   compile 'com.loopj.android:android-async-http:1.4.9'

我导入

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import cz.msebera.android.httpclient.Header;

...

AsyncHttpClient client = new AsyncHttpClient();
        client.get(url, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                try {
                    pg1.dismiss();
                    String jsonStr = new String(responseBody, "UTF-8");
                    Log.e("Tag ","jsonStr "+jsonStr);

                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                pg1.dismiss();
                Log.e("Tag ","fetch feeds fail");                 
            }
        });

网址位于 GET 方法中 任何人都可以帮我解决这个问题

2 个答案:

答案 0 :(得分:0)

只需在onFailure()方法中打印responseBody即可。如果是时间的话;然后你可以设置client.setTimeout(30000);在client.get()之前。

OR

检查你的网址;如果它在浏览器中给出响应,也检查键和值。可能是服务器没有给你任何回应。

答案 1 :(得分:0)

我使用内部类扩展AsncyTask做同样的事情。

private class JSONWeatherTask extends AsyncTask<String, Void, Weather> {

    @Override
    protected Weather doInBackground(String... params) {

        Weather weather = new Weather();
        data = ((new WeatherHttpClient()).getWeatherData(params[0], params[1]));

        Log.d("DATA", data);

        try {
            weathers = JSONWeatherParser.getWeather(data);

            // Let's retrieve the icon
            weather.iconData = ((new WeatherHttpClient()).getImage(weather.currentCondition.getIcon()));

        } catch (JSONException e) {
            e.printStackTrace();
        }
        return weather;

    }

在WeatherHttpClient类中,我使用带有HttpUrlConnection的URL获取数据。