如何检查InputStream是否正在发送数据? (与GSON合作)

时间:2014-02-04 12:22:11

标签: java android listener inputstream

我在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);

提前感谢。

0 个答案:

没有答案