J'ai décidé d'écrire la communication HTTP en Java, mais quelle bibliothèque client dois-je utiliser? J'étais perdu car il y avait beaucoup de candidats.
Ce que vous avez utilisé, ce que vous savez
Répertoriez ceux qui apparaissent dans les candidats de recherche "ok http vs" et "apache http client vs" sur Google
Certains d'entre eux incluent non seulement HttpClient, mais également diverses fonctions telles que l'analyse JSON. Si vous le cherchez, il semble y en avoir plus.
U, un de ses premiers collègues, a utilisé OkHttp dans sa récente application.
http://qiita.com/Reyurnible/items/33049c293c70bd9924ee → 2016-12-09 Recommandation de rénovation
http://kikutaro777.hatenablog.com/entry/2015/07/19/044634 → 19/07/2015 J'ai essayé d'utiliser Unirest
http://vividcode.hatenablog.com/entry/java/google-http-java-client → 08/11/2014 j'ai essayé d'utiliser google-http-java-client
http://qiita.com/kou_hon/items/ddfb3fcb0277103e8b03 → Transfert de Volley à OkHttp
Ce n'est pas un article comparatif, donc c'est difficile à juger, mais chaque atmosphère est véhiculée. Selon 4, utiliser Volley sur Android semble être difficile.
http://stackoverflow.com/questions/1322335/what-is-the-best-java-library-to-use-for-http-post-get-etc → 2009 Commons HttpClient recommandé. Il n'a que 7 ans, donc c'est vieux.
https://www.quora.com/What-is-the-best-both-fast-and-reliable-HTTP-client-library-in-Java → 2014-2015 Unirest, Jersey, Netty, OkHttp, etc. sont recommandés. C'est trop lâche pour être utile.
Les bibliothèques restantes.
google-http-java-client vs OkHttp → Les informations sont introuvables.
Unirest vs OkHttp → https://android.libhunt.com/project/unirest-java/vs/okhttp Le nom est majoritairement OkHttp
OkHttp vs Jersey → Je ne peux pas obtenir d'informations.
En raison du grand nombre d'articles, il semble qu'OkHttp compte le plus d'utilisateurs. Jersey est un mot général (jersey), c'est donc un mystère difficile à rechercher sur Google.
Comparez le code avec les fonctionnalités communes. Un exemple qui définit l'en-tête, le corps et les POST.
OkHttp
OkHttpClient client = new OkHttpClient();
MediaType MIMEType= MediaType.parse("application/json; charset=utf-8");
RequestBody requestBody = RequestBody.create (MIMEType,"{}");
Request request = new Request.Builder().url(url).post(requestBody).build();
Response response = client.newCall(request).execute();
C'est un peu difficile à lire car j'ai fait trop d'objets.
google-http-java-client
Response response =
client
.preparePost("http://localhost:8080/post")
.setBody(builder.toString())
.execute()
.get();
C'est rafraîchissant dans la chaîne de méthodes, mais il semble être mal compris que c'est get () à la fin même si c'est POST.
Unirest
HttpResponse<JsonNode> jsonResponse = Unirest.post("http://localhost:8080/post")
.header("Content-Type", "application/json")
.queryString("apiKey", "123")
.field("param1", "nitori")
.field("param2", "1234")
.asJson();
C'est aussi une chaîne de méthodes. Il n'y a rien de spécial à faire.
Jersey
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8080/post").path("resource");
Form form = new Form();
form.param("x", "foo");
form.param("y", "bar");
MyJAXBBean bean =
target.request(MediaType.APPLICATION_JSON_TYPE)
.post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE),
MyJAXBBean.class);
OkHttp, qui compte un grand nombre d'utilisateurs et a établi une position standard de facto, est le plus sûr. Si vous fermez les yeux sur le fait d'être mineur, Unirest semble être l'implémentation la plus pratique et la plus propre en termes de code.
Pour des exigences plus approfondies, les performances, la gestion des cookies, les tentatives, le multithreading, etc. doivent être pris en compte.
Java9 peut ou non fournir HttpClient dans la bibliothèque standard. https://thoughtfulsoftware.wordpress.com/2016/09/12/java-9-the-new-httpclient/ Mais ce n'est toujours pas disponible sur Android.
Recommended Posts