我正在使用以下代码从服务器获取一些数据:(它发生在按钮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来获取它并且速度很快,将网址粘贴到我的浏览器中它很快。
答案 0 :(得分:0)
如果你怀疑服务器端,你可以从等式中删除android堆栈并直接在curl中测试,使用开关-V和&#39; time&#39;测量你想要的东西。
当您直接调查服务器并且不再怀疑服务器端时,您将返回到您的Android堆栈。
REST端点上的POST示例:
curl -X POST -H "X-Parse-Application-Id: ovv" -H "X-Parse-REST-API-Key: heoj" -H "X-Parse-Session-Token: i9ds" -H "Content-Type: application/json" --data @media1.json https://api.parse.com/1/classes/MediaItem