J'essaie d'utiliser httpClient (par apache) pour publier et obtenir des données. La publication est tout à fait correcte et mon code pour cela n'a aucun problème, cependant, je ne peux pas dire la même chose pour obtenir des données.Extraction du corps du message à partir d'une réponse HTTP
Le site que je suis en train d'obtenir des données de est la suivante: http://www.posttestserver.com/data/2013/04/16/01.13.04594755373
Je veux seulement recevoir le corps du poste (la chaîne JSON en bas en commençant par les cas récents), cependant, la méthode que je J'utilise actuellement (et chaque méthode que je trouve en ligne) renvoie l'heure, l'adresse IP source, les en-têtes et le corps (en gros, il renvoie tout). Y a-t-il un moyen d'analyser le corps de tout cela? Je ne veux pas passer par la chaîne retournée et lui dire de chercher le texte "Begin Post Body", je veux une méthode naturelle pour le faire. Est-ce que ça existe?
TLDR: Je veux seulement qu'il revienne ce qui est dans le corps post
Voici mon code:
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public static void main(String[] args) throws ClientProtocolException, IOException{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://www.posttestserver.com/data/2013/04/16/01.41.38521171013");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println(EntityUtils.toString(entity));
}
Et voici ce qui est retourné:
Time: Tue, 16 Apr 13 01:41:38 -0700
Source ip: 155.198.108.247
Headers (Some may be inserted by server)
UNIQUE_ID = UW0OwtBx6hIAACfjfl4AAAAA
CONTENT_LENGTH = 7627
CONTENT_TYPE = application/json
HTTP_HOST = posttestserver.com
HTTP_CONNECTION = close
HTTP_USER_AGENT = Apache-HttpClient/4.2.4 (java 1.5)
REMOTE_ADDR = 155.198.108.247
REMOTE_PORT = 54779
GATEWAY_INTERFACE = CGI/1.1
REQUEST_METHOD = POST
QUERY_STRING =
REQUEST_URI = /post.php
REQUEST_TIME = 1366101698
No Post Params.
== Begin post body ==
{"Recent Cases":[{"descript..etc etc"}]}
== End post body ==
Toutes les idées?
Merci pour la réponse rapide, mais votre méthode produit exactement la même sortie que la mienne (votre buffer.toString() produit la même chose que mon EntityUtils.toString (entity)). = S. Un autre conseil? –
Ah, je vois que c'est la réponse de l'URL qui apparaît dans un navigateur aussi donc ce n'est pas l'en-tête réel c'est toute la page! Cette réponse est invalide JSON. Si elles n'ont pas une URL reposante vous une analyse qui produit juste le JSON vous pourriez être foutu et devra l'analyser (ce qui est horrible). – david99world
J'ai changé le téléchargement en JSON et j'ai la même erreur, ce qui signifie que l'analyse de chaîne est probable. Pouah. Vraiment, j'espérais qu'il y aurait une solution plus élégante. Merci quand même d99w. –