J'ai ce code sur mon téléphone Android.
URI uri = new URI(url);
HttpPost post = new HttpPost(uri);
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(post);
J'ai une application de formulaire Web asp.net qui a dans la page charger cette
Response.Output.Write("It worked");
Je veux saisir cette réponse de la réponse HttpReponse et l'imprimer. Comment puis-je faire cela?
J'ai essayé response.getEntity().toString()
mais il semble simplement imprimer l'adresse en mémoire.
Merci
Utilisez ResponseHandler
. Une ligne de code. Voir ici et ici pour des exemples de projets Android l'utilisant.
public void postData() {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.yoursite.com/user");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
ResponseHandler<String> responseHandler=new BasicResponseHandler();
String responseBody = httpclient.execute(httppost, responseHandler);
JSONObject response=new JSONObject(responseBody);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
ajoutez une combinaison de ce message et complétez HttpClient à - http://www.androidsnippets.org/snippets/36/
Je voudrais juste le faire à l'ancienne. C'est une solution plus fiable que ResponseHandler, au cas où vous obtiendriez différents types de contenu dans la réponse.
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
response.getEntity().writeTo(outstream);
byte [] responseBody = outstream.toByteArray();
J'ai utilisé le code suivant
BufferedReader r = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuilder total = new StringBuilder();
String line = null;
while ((line = r.readLine()) != null) {
total.append(line);
}
r.close();
return total.toString();
Ce code renverra l'intégralité du message de réponse dans reply en tant que String
et le code d'état dans rsp , en tant que int
.
respond = response.getStatusLine().getReasonPhrase();
rsp = response.getStatusLine().getStatusCode();`
La méthode la plus simple consiste probablement à utiliser org.Apache.http.util.EntityUtils
:
String message = EntityUtils.toString(response.getEntity());
Il lit le contenu d'une entité et le renvoie sous forme de chaîne. Le contenu est converti à l'aide du jeu de caractères de l'entité (le cas échéant). Sinon, "ISO-8859-1" est utilisé.
Si nécessaire, vous pouvez explicitement définir un jeu de caractères par défaut - par exemple.
String message = EntityUtils.toString(response.getEntity(). "UTF-8");
Il obtient le contenu de l'entité sous forme de chaîne, en utilisant le jeu de caractères fourni par défaut si aucun élément n'est trouvé dans l'entité. Si le jeu de caractères par défaut transmis est null, la valeur par défaut "ISO-8859-1" est utilisée.