나는 서버에서 정보의 큰 덩어리를 읽어야하는 안드로이드 응용 프로그램을 만들고 있습니다.큰 응답 본문을 HttpClient로 읽음
서버가 정보를 JSONArray로 보내고 서버 측에서 문제가 없습니다.
그러나이 JSONArray를 수신하려고 할 때 문제가 발생하는 이유는 수신하기에 너무 큰 것 같습니다.
내가 같이 사용하여 서버에 HttpClient를 연결 :
HttpParams httpParams = new BasicHttpParams();
int timeoutConnection = 20000;
HttpConnectionParams.setConnectionTimeout(httpParams, timeoutConnection);
int timeoutSocket = 20000;
HttpConnectionParams.setSoTimeout(httpParams, timeoutSocket);
HttpClient client = new DefaultHttpClient(httpParams);
HttpGet request = new HttpGet();
request.setURI(url);
HttpResponse response = null;
try {
response = client.execute(request);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader in = null;
if (response != null) {
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()), 100000);
}
return in;
그리고 나는 단지 내의 readLine() 메소드를 BufferedReader로에 무엇이 읽으려고하지만 제가 돌아 가야하는 것은의 전체 만족하지 응답. 웹 브라우저에서 동일한 컨텐츠에 액세스하려고 시도했기 때문에이 사실을 알고 전체 컨텐츠를 리턴합니다.
서버의 응답은 (나도 몰라, 그것을 영향을 미칠 수있는)
을 나는 4킬로바이트을 읽을 수 그리고 난 무려 141킬로바이트을 읽을 필요가 한 줄에 (그래서 난 지금까지 끄기).
내 개인적인 추측은 내 코드 어딘가에 크기 제한이 있다는 것입니다.
BufferedReader in = getResponse(new URI(params[0]));
// Read from the received buffer
String s;
StringBuilder sb = new StringBuilder(10000);
if(in != null){
while ((s = in.readLine()) != null){
sb.append(s);
}
}
Log.d :
는 추가 나는이 같은 BufferedReader로 읽기 ("문제", sb.toString());
편집 : 응답은 다르지 않다, 그것은 항상 같은 길이
EDIT2 :()는 인쇄 길이 제한을 한 것으로는 Log.d 것을 보인다! 시작하는 데 문제가 없었습니다 ... 죄송합니다!
서버에서 응답을 그냥 문자열 JSON 무엇입니까? –
예, JSON으로 변환 된 일반 텍스트입니다. –
GZIP 형식을 사용할 수없는 이유는 무엇입니까? – AAV