관련 HTTP 연결 문제가 있습니다. 내 코드 :HTTP URL 연결을 완전히 읽을 수 없습니다.
URL url = null;
try {
url = new URL(_url);
} catch (MalformedURLException e) {
}
if (url != null) {
HttpURLConnection urlConn = null;
InputStreamReader isr = null;
try {
urlConn = (HttpURLConnection)url.openConnection();
urlConn.setRequestMethod("GET");
urlConn.setConnectTimeout(45000);
if(response == HttpURLConnection.HTTP_OK) {
StringBuffer readData = new StringBuffer("");
int size = 1024;
char[] buffer = new char[size];
int len;
isr = new InputStreamReader(urlConn.getInputStream());
while ((len = isr.read(buffer, 0, size)) > 0) {
readData.append(buffer, 0, len);
}
}
}
catch(Exception e) {
}
finally {
if(urlConn != null) {
try {
urlConn.disconnect();
} catch(Exception e) {
}
}
if(isr != null) {
try {
isr.close();
} catch(Exception e) {
}
}
}
이 코드는 데이터를 완전히 다운로드 할 수 없습니다. 예를 들어 : 총 크기는 읽기 : 13,901 바이트 코드 위 크기 읽을 수 : 12,937 바이트 여기 뭐가 문제
를?
상담해주세요.
13901 바이트인지 어떻게 알 수 있습니까? HTTP 내용 길이 헤더에 있습니까? 아니면 디스크에서 제공하는 파일을보고 있습니까? – Paolo
설명서에는 0이 아니라 스트림의 끝에 도달하면 -1이 반환된다고 나와 있습니다. 수정 된 경우에도 Ramp의 응답이 아마도 당신이 문제가있는 이유라고 생각합니다. http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStreamReader.html#read%28char[],%20int,%20int%29 – rui
글쎄, InputStream은 허용되지 않습니다. 적어도 1 바이트가 요청되면 0을 반환하므로 'if (count> 0)'가 실제로 확인됩니다. – StaxMan