【发布时间】:2014-09-27 17:22:16
【问题描述】:
我正在使用以下代码从服务器获取一些数据:(它发生在按钮 onclick 上)
@Override
protected ArrayList<Category> doInBackground(String... arg0) {
ArrayList<Category> result = new ArrayList<Category>();
JSONArray array = new JSONArray();
BufferedReader in = null;
try
{
HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpClient httpclient = new DefaultHttpClient(params);
HttpGet request = new HttpGet();
URI website = new URI(_URL);
request.setURI(website);
HttpResponse response = httpclient.execute(request);
in = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
String data = in.readLine();
array = new JSONArray(data);
for(int i = 0;i < array.length();i++)
{
JSONObject object = array.getJSONObject(i);
Category category = new Category(object.getInt("Id"), object.getString("Name"));
result.add(category);
}
}
catch(Throwable t)
{
Log.e("Error getting categories", t.getMessage());
}
return result;
}
问题是 10 次尝试中有 8 次,它会抛出以下异常:
org.apache.http.conn.HttpHostConnectException: Connection to http://kiagallery.ir refused
而且大多数时候获取数据需要很长时间,但有时速度快如闪电,数据不大,这是目前应该获取的数据:
[{"Id":44,"Name":"Collection 101"},{"Id":45,"Name":"local 01"}]
所以我的问题是,为什么有时它可以以合理的速度获取数据,有时它会抛出异常,可能是网络速度?因为我的工作场所的网络很糟糕,我也在家里尝试过,结果更好,但偶尔还是会出现异常
附加信息:我使用 curl 来获取它,它很快,将 url 粘贴到我的浏览器中,它很快。
【问题讨论】:
-
尝试设置连接超时
-
可能取决于网速。
-
听起来像是连接或服务器问题。
-
@userM1433372 我不会将其称为服务器问题,因为它在其他情况下工作正常。无论如何,我打电话给我的 ISP 并告知他们连接速度很慢,他们做了一些事情,现在它似乎工作正常,正如预期的那样......无论如何感谢您的回复
标签: android httprequest apache-httpclient-4.x androidhttpclient