我正在尝试解析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 方法中 任何人都可以帮我解决这个问题
答案 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获取数据。