HttpUrlConnection.getInputStream retourne vide flux dans Android
- Je faire une demande à un serveur à l'aide de HttpUrlConnection.
Après la connexion:
- - Je obtenir le code de réponse: 200
- Je reçois la réponse du message: OK
- Je reçois des flux d'entrée, aucune exception n'est levée mais:
- dans un programme autonome-je obtenir le corps de la réponse, comme prévu:
{"name":"mon nom","anniversaire":"01/01/1970","id":"100002215110084"}
- dans un android activité, le flux est vide (() = = 0), et donc je ne peux pas obtenir
n'importe quel texte.
Tout indice ou une piste à suivre? Merci.
EDIT: ici, c'est le code
Veuillez noter: j'utilise import java.net.HttpURLConnection;
, C'est la norme
http bibliothèque Java. Je ne veux pas utiliser aucune bibliothèque externe. En fait
Je n'ai avoir des problèmes d'android à l'aide de la bibliothèque de apache httpclient (certains de leurs anonyme .la classe ne peut pas être utilisé par les apk compilateur).
Bien, le code:
URLConnection theConnection;
theConnection = new URL("www.example.com?query=value").openConnection();
theConnection.setRequestProperty("Accept-Charset", "UTF-8");
HttpURLConnection httpConn = (HttpURLConnection) theConnection;
int responseCode = httpConn.getResponseCode();
String responseMessage = httpConn.getResponseMessage();
InputStream is = null;
if (responseCode >= 400) {
is = httpConn.getErrorStream();
} else {
is = httpConn.getInputStream();
}
String resp = responseCode + "\n" + responseMessage + "\n>" + Util.streamToString(is) + "<\n";
return resp;
Je vois:
200
OK
le corps de la réponse
mais seulement
200
OK
dans android
S'il vous plaît, pouvez-vous fournir votre code
Ce n'est pas de répondre à la question, mais Vous pouvez essayer ce code...stackoverflow.com/questions/15023616/android-progressdialog/... pour obtenir les données à partir du service
pourriez-vous poster votre code s'il vous plaît? pourquoi pas DefaultHttpClient?
Ce n'est pas de répondre à la question, mais Vous pouvez essayer ce code...stackoverflow.com/questions/15023616/android-progressdialog/... pour obtenir les données à partir du service
pourriez-vous poster votre code s'il vous plaît? pourquoi pas DefaultHttpClient?
OriginalL'auteur cibercitizen1 | 2013-02-22
Vous devez vous connecter pour publier un commentaire.
Essayer le code de Tomislav j'ai la réponse.
Ma fonction streamToString() utilisé .() pour détecter si il y a toutes les données reçues,
et elle renvoie la valeur 0 dans Android. Sûrement, je l'ai appelé trop tôt.
Si je préfère utiliser readLine():
puis, il attend les données arrivent.
Grâce.
OriginalL'auteur cibercitizen1
Vous pouvez essayer avec ce code qui sera de retour réaction en Chaîne:
OriginalL'auteur Tomislav
Le Flux de données peut ne pas être prêt, de sorte que vous devriez vérifier dans une boucle que les données dans le flux de données est disponible avant de tenter d'y accéder.
Une fois que les données sont prêtes, vous devez lire et de le stocker dans un autre endroit, comme un tableau d'octets; un flux binaire de l'objet est un bon choix pour lire des données dans un tableau d'octets. La raison pour laquelle un tableau d'octets est un meilleur choix est parce que les données peuvent être des données binaires comme un fichier d'image, etc.
Dans le code ci-dessus,
bytes
est la réponse que le tableau d'octets. Vous pouvez les convertir en string si c'est des données de texte, par exemple des données de texte utf-8:OriginalL'auteur Amir Amir