Я использую приведенный ниже код для получения некоторых данных с сервера: (это происходит при нажатии кнопки)
@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;
}
проблема в том, что 8 из 10 попыток выдает следующее исключение:
org.apache.http.conn.HttpHostConnectException: Connection to http://kiagallery.ir refused
и в большинстве случаев для получения данных требуется много времени, но иногда это происходит быстро, как молния, данные невелики, вот данные, которые должны быть получены в данный момент:
[{"Id":44,"Name":"Collection 101"},{"Id":45,"Name":"local 01"}]
поэтому мой вопрос: почему иногда он может получать данные с разумной скоростью, а иногда выдает исключение, может быть скорость сети? потому что на моем рабочем месте была ужасная сеть, я также пробовал дома, и результат был лучше, но исключение все равно возникало время от времени.
Дополнительная информация: я использовал curl, чтобы получить его, и это было быстро, вставьте URL-адрес в свой браузер, и это было быстро.