Je suis confronté à un problème de connexion Http. mon code:Http connexion URL ne peut pas lire complètement
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) {
}
}
}
Ce code ne peut pas télécharger complètement les données. Par exemple: Taille totale à lire: 13901 octets code ci-dessus peut lire taille: 12937 octets
Quel est le problème ici?
S'il vous plaît des conseils gars.
Comment savez-vous que c'est 13901 octets? Est-ce dans l'en-tête HTTP content-length ou regardez-vous le fichier que vous diffusez sur le disque? – Paolo
La documentation indique que -1 est renvoyé lorsque vous arrivez à la fin du flux, et non sur 0. Même avec cette correction, je suppose que la réponse de Ramp est probablement la raison pour laquelle vous rencontrez des problèmes. http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStreamReader.html#read%28char[],%20int,%20int%29 – rui
Bien, InputStream n'est pas autorisé pour renvoyer 0 si au moins 1 octet est demandé, donc vérifier que 'if (count> 0)' est correct. – StaxMan