我在StackOverflow上没有找到这个问题,或者我用松散的关键词进行搜索。
我习惯在Internet上为JSON文件获取一个InputSteam,这是我的主要功能:
static HttpGet getRequest;
static HttpResponse getResponse;
public static InputStream retrieveStream(String url, int timeout) {
getRequest = null;
getResponse = null;
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, timeout);
HttpConnectionParams.setSoTimeout(httpParameters, timeout);
DefaultHttpClient client = new DefaultHttpClient(httpParameters);
getRequest = new HttpGet(url);
try {
getResponse = client.execute(getRequest);
final int statusCode = getResponse.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
Log.w("ERROR", "Error " + statusCode + " for URL " + url);
return null;
}
HttpEntity getResponseEntity = getResponse.getEntity();
return getResponseEntity.getContent();
} catch (IOException e) {
getRequest.abort();
Log.w("ERROR", "Error for URL " + url, e);
} catch (Exception e) {
getRequest.abort();
Log.w("ERROR", "Error for URL " + url, e);
}
return null;
}
对于避免错误的范围或者让用户取消请求的可能性,因为Internet处于打开状态但工作不正常,我想在我的应用程序未接收数据并且未完成时制作计数器。我知道如何做反击,但是,我怎么能做出那种“听众”?
我用来继续这个(总是异步):
InputStream source = f.retrieveStream(params[0]);
Gson gson = new Gson();
Reader reader = new InputStreamReader(source);
response = gson.fromJson(reader, Usuario.class);
提前感谢。