à mon humble avis: Client HTTP Apache
exemple d'utilisation:
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.params.HttpMethodParams;
import java.io.*;
public class HttpClientTutorial {
private static String url = "http://www.apache.org/";
public static void main(String[] args) {
// Create an instance of HttpClient.
HttpClient client = new HttpClient();
// Create a method instance.
GetMethod method = new GetMethod(url);
// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
try {
// Execute the method.
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}
// Read the response body.
byte[] responseBody = method.getResponseBody();
// Deal with the response.
// Use caution: ensure correct character encoding and is not binary data
System.out.println(new String(responseBody));
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
// Release the connection.
method.releaseConnection();
}
}
}
quelques caractéristiques marquantes:
- Basé sur des standards, Java pur, implémentation des versions HTTP 1.0 et 1.1
- Implémentation complète de toutes les méthodes HTTP (GET, POST, PUT, DELETE, HEAD, OPTIONS et TRACE) dans un cadre OO extensible.
- Prend en charge le cryptage avec le protocole HTTPS (HTTP sur SSL).
- Configuration et suivi granulaires non standard.
- Connexions transparentes via des proxys HTTP.
- Connexions HTTPS tunnelisées via des proxys HTTP, via la méthode CONNECT.
- Connexions transparentes via les proxies SOCKS (versions 4 et 5) utilisant le support natif de socket Java.
- Authentification à l'aide des méthodes Basic, Digest et de cryptage NTLM (NT Lan Manager).
- Mécanisme de plug-in pour les méthodes d'authentification personnalisées.
- Formulaire POST en plusieurs parties pour le téléchargement de fichiers volumineux.
- Implémentations de sockets sécurisés enfichables, facilitant l'utilisation de solutions tierces
- Prise en charge de la gestion des connexions pour une utilisation dans les applications multithreads. Prend en charge la définition des connexions totales maximales ainsi que des connexions maximales par hôte. Détecte et ferme les connexions périmées.
- Gestion automatique des cookies pour lire les en-têtes Set-Cookie: du serveur et les renvoyer dans un en-tête Cookie: le cas échéant.
- Mécanisme de plug-in pour les politiques de cookies personnalisées.
- Demandez des flux de sortie pour éviter de mettre en mémoire tampon tout corps de contenu en diffusant directement sur le socket vers le serveur.
- Flux d'entrée de réponse pour lire efficacement le corps de la réponse en diffusant directement du socket vers le serveur.
- Connexions persistantes utilisant KeepAlive dans HTTP / 1.0 et persistance dans HTTP / 1.1
- Accès direct au code de réponse et aux en-têtes envoyés par le serveur.
- La possibilité de définir des délais de connexion.
- HttpMethods implémente le modèle de commande pour permettre des requêtes parallèles et une réutilisation efficace des connexions.
- Le code source est disponible gratuitement sous la licence du logiciel Apache.
Je recommanderais Apache HttpComponents HttpClient , un successeur de Commons HttpClient
Je recommanderais également de jeter un oeil à HtmlUnit. HtmlUnit est un "navigateur sans GUI pour les programmes Java". http://htmlunit.sourceforge.net/
la source
Je suis un peu partisan de Jersey . Nous utilisons la version 1.10 dans tous nos projets et n'avons pas rencontré de problème que nous n'avons pas pu résoudre avec.
Quelques raisons pour lesquelles je l'aime:
En vérité, HTTPClient et Jersey sont très similaires dans leur implémentation et leur API. Il existe également une extension pour Jersey qui lui permet de prendre en charge HTTPClient.
Quelques exemples de code avec Jersey 1.x: https://blogs.oracle.com/enterprisetechtips/entry/consuming_restful_web_services_with
http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/
HTTPClient avec Jersey Client: https://blogs.oracle.com/PavelBucek/entry/jersey_client_apache_http_client
la source
Je suis d'accord que httpclient est une sorte de standard - mais je suppose que vous recherchez des options alors ...
Restlet fournit un client http spécialement conçu pour interagir avec les services Web Restful.
Exemple de code:
Voir http://www.restlet.org/ pour plus de détails
la source
Puis-je vous recommander corn-httpclient . C'est simple, rapide et suffisant pour la plupart des cas.
dépendance maven
la source
Le client HTTP Java de Google me semble bien car il peut également fonctionner sur Android et App Engine.
la source
Je veux mentionner la bibliothèque cliente Http Ning Async . Je ne l'ai jamais utilisé, mais mon collègue en raffole par rapport au client Apache Http, que j'ai toujours utilisé dans le passé. J'ai été particulièrement intéressé d'apprendre qu'il est basé sur Netty , le framework d'entrées / sorties asynchrones haute performance, avec lequel je suis plus familier et que je tiens en haute estime.
la source