Android:如果我获得HttpResponse状态代码200,那么没有数据丢失?

时间:2015-06-06 03:18:04

标签: java android apache httprequest httpresponse

我对Android(Java)HttpRequest和HttpResponse有疑问。 我使用Apache库。

import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.HttpResponse;

HttpGet httpGet = new HttpGet(uri);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(httpGet);

if(response.getStatusLine().getStatusCode() == 200) {
    BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    StringBuilder sb = new StringBuilder();
    String str = "";
    while ((str = br.readLine()) != null) {
        sb.append(str);
    }
}

响应内容response.getEntity().getContent()大小约为500KB

我可以说,如果我获得状态代码200并且我可以阅读内容直到EOF(文件结束),那么通过网络传输没有数据丢失吗?

或者我无法确定是否有数据丢失,所以我需要CheckSum机制来检查?

感谢。 埃里克

1 个答案:

答案 0 :(得分:0)

好吧......应该是这样的,对吗? :)如果您已经毫无例外地阅读了所有实体内容,那么您就拥有了完整,正确的响应体。无需添加自己的校验和。

我能看到的唯一问题是HTTP / 1.0服务器或中介。如果他们使用TCP FIN结束响应,则响应主体可能会在没有客户知识的情况下提前终止。

我认为我们现在不必担心HTTP / 1.0。如果这样做,您可以设计数据格式,以便在客户端检测到提前终止。