http 연결을 만들 때 약간 혼란 스럽습니다. 나는 서버의 데이터가 클라이언트에서 다운로드를 완료 한 코드의 위치를 알고 싶습니까?HttpGet 및 DefaultHttpClient 라이브 사이클, 모든 단계에서 모든 데이터가 서버에서 검색됩니까?
I가 다음 코드, 표준 HTTP 자바 접속 코드 :
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}
} catch (Exception e) {
e.printStackTrace();
}
}
때문에 문제가 실제로에서 일어나는 것입니다 :
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
은이 곳에서 다운로드 서버 데이터의 전부 또는 서버의 데이터가 여전히 while 블록에 도착할 수 있습니다.
while ((s = buffer.readLine()) != null) {
response += s;
}
내 이해는 그 연결이 아직 살아 있다는 것입니다 :
while ((s = buffer.readLine()) != null) {
response += s;
}
및 더 많은 데이터가 소켓을 읽는 동안 올 수 있습니다. 내가 영화를 좋아해서 큰 길이나 그림을 그리는 등의 입찰 데이터를 처리하기 위해 스트림을 사용하고 있기 때문에이 사실을 알고 있습니다.
HttpResponse execute = client.execute(httpGet);
응답이 시점 이후에 메모리에 : .execute()
호출되면