Ich habe beschlossen, HTTP-Kommunikation in Java zu schreiben, aber welche Client-Bibliothek soll ich verwenden? Ich war ratlos, weil es viele Kandidaten gab.
Was du benutzt hast, was du weißt
Listen Sie diejenigen auf, die in den Suchkandidaten "ok http vs" und "apache http client vs" bei Google erscheinen
Einige von ihnen enthalten nicht nur HttpClient, sondern auch verschiedene Funktionen wie JSON-Parsing. Wenn Sie danach suchen, scheint es mehr zu geben.
U, ein Early Adopter-Kollege, hat OkHttp in seiner letzten App verwendet.
http://qiita.com/Reyurnible/items/33049c293c70bd9924ee → 09.12.2016 Nachrüstempfehlung
http://kikutaro777.hatenablog.com/entry/2015/07/19/044634 → 19.07.2015 Ich habe versucht, Unirest zu verwenden
http://vividcode.hatenablog.com/entry/java/google-http-java-client → 08.11.2014 Ich habe versucht, google-http-java-client zu verwenden
http://qiita.com/kou_hon/items/ddfb3fcb0277103e8b03 → Transfer von Volley zu OkHttp
Es ist kein Vergleichsartikel, daher ist es schwer zu beurteilen, aber jede Atmosphäre wird vermittelt. Laut 4 scheint die Verwendung von Volley unter Android schwierig zu sein.
http://stackoverflow.com/questions/1322335/what-is-the-best-java-library-to-use-for-http-post-get-etc → 2009 Commons HttpClient Empfohlen. Es ist nur 7 Jahre alt, also ist es alt.
https://www.quora.com/What-is-the-best-both-fast-and-reliable-HTTP-client-library-in-Java → 2014-2015 Unirest, Jersey, Netty, OkHttp usw. werden empfohlen. Es ist zu locker, um hilfreich zu sein.
Die restlichen Bibliotheken.
google-http-java-client vs OkHttp → Informationen können nicht gefunden werden.
Unirest vs OkHttp → https://android.libhunt.com/project/unirest-java/vs/okhttp Der Name ist überwiegend OkHttp
OkHttp vs Jersey → Ich kann keine Informationen bekommen.
Aufgrund der großen Anzahl von Artikeln scheint OkHttp die meisten Benutzer zu haben. Jersey ist ein allgemeines Wort (Trikot), daher ist es ein Rätsel, das schwer zu googeln ist.
Vergleichen Sie Code mit allgemeinen Funktionen. Ein Beispiel, das den Header und den Body sowie die POSTs festlegt.
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();
Es ist etwas schwer zu lesen, weil ich zu viele Objekte gemacht habe.
google-http-java-client
Response response =
client
.preparePost("http://localhost:8080/post")
.setBody(builder.toString())
.execute()
.get();
Es ist erfrischend in der Methodenkette, aber es scheint missverstanden zu werden, dass es am Ende get () ist, obwohl es POST ist.
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();
Dies ist auch eine Methodenkette. Es gibt nichts Besonderes zu tun.
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);
Am sichersten ist OkHttp, das eine große Anzahl von Benutzern hat und eine De-facto-Standardposition festgelegt hat. Wenn Sie Ihre Augen vor Minderjährigen verschließen, scheint Unirest die bequemste und sauberste Implementierung in Bezug auf Code zu sein.
Für detailliertere Anforderungen müssen Leistung, Cookie-Verwaltung, Wiederholungsversuche, Multithreading usw. berücksichtigt werden.
Java9 kann HttpClient in der Standardbibliothek bereitstellen oder nicht. https://thoughtfulsoftware.wordpress.com/2016/09/12/java-9-the-new-httpclient/ Aber es ist immer noch nicht für Android verfügbar.
Recommended Posts