In diesem Artikel werden hauptsächlich die Verwendungsmethoden und Beispiele von OkHttp in Java vorgestellt. Freunde, die es benötigen, können sich auf
Die Verwendungsmethoden und Beispiele von OkHttp in Java beziehen
Übersicht
Bereiten Sie sich darauf vor, Retrofit zu studieren, und es basiert auf OkHttp. Verwenden Sie also zuerst OkHttp, ohne sich mit dem Quellcode zu befassen, sondern erkunden Sie einfach, wie man es verwendet. Ich werde den Quellcode bei Gelegenheit noch einmal überprüfen.
Bevor Sie fortfahren, benötigen Sie zunächst zwei JAR-Pakete, eines davon ist das okHttp-JAR-Paket, das von Github heruntergeladen werden kann, und das andere ist das Abhängigkeitspaket. Ohne es ist das Projekt sehr wichtig kann nicht laufen.
Zwei Möglichkeiten für OkHttp-Anfragen
Es ist nicht schwer zu erraten, dass es bei Netzwerkanfragen nur zwei Möglichkeiten gibt, eine davon ist die Verwendung Rückrufe und der andere besteht darin, die Ausführung des untergeordneten Threads zu starten.
Der erste: Sub-Thread-Ausführung starten
OkHttpClient client = new OkHttpClient(); Request build = new Request.Builder().url(url).build(); try { <span style="white-space:pre"> </span>Response execute = client.newCall(build).execute(); if(execute.isSuccessful()){ System.out.println("wisely aaa"); } else { System.out.println("wisely bbb"); } } catch (IOException e) { e.printStackTrace(); }
Der zweite: Rückrufe verwenden, ich persönlich verwende dies gerne am besten. (PS: Ich fühle mich zu jung und zu einfach!! Ich dachte ursprünglich, dass sich die Rückrufmethode im Hauptthread befindet, aber es stellte sich heraus, dass es sich um einen Unterthread handelte, einen Unterthread ...)
OkHttpClient client = new OkHttpClient(); Request build = new Request.Builder().url(url).build(); client.newCall(build).enqueue(new Callback() { @Override public void onResponse(Response arg0) throws IOException { System.out.println("wisely success"); } @Override public void onFailure(Request arg0, IOException arg1) { System.out.println("wisely failure"); } });
OkHttp get request
1. Holen Sie sich Bild
OkHttpClient client = new OkHttpClient(); Request build = new Request.Builder().url(url).build(); client.newCall(build).enqueue(new Callback() { @Override public void onResponse(Response response) throws IOException { // byte[] bytes = response.body().bytes(); InputStream is = response.body().byteStream(); Options options = new BitmapFactory.Options(); options.inSampleSize = 8; // Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length,options); Bitmap bitmap = BitmapFactory.decodeStream(is, null, options); Message msg = handler.obtainMessage(); msg.obj = bitmap; handler.sendMessage(msg); } @Override public void onFailure(Request arg0, IOException arg1) { System.out.println("wisely fail:"+arg1.getCause().getMessage()); } });
Schreiben Sie nur den Schlüsselcode, und der relevante Code des Handlers wurde nicht geschrieben.
Es gibt zwei Möglichkeiten, Netzwerkbilder abzurufen. Die erste besteht darin, das ByteArray abzurufen, und die zweite darin, den Eingabestream abzurufen. Beachten Sie, dass sich onResponse im untergeordneten Thread befindet...
OkHttps Post-Anfrage
Verglichen mit der Get-Anfrage, Beitrag Es sind etwas mehr Kategorien erforderlich.
1. Das erste ist das am häufigsten verwendete Formular.
OkHttpClient client = new OkHttpClient(); RequestBody body = new FormEncodingBuilder() .add("userName", "13363114390") .add("password", "200820e3227815ed1756a6b531e7e0d2").build(); Request build = new Request.Builder().url(url).post(body).build(); client.newCall(build).enqueue(new Callback() { @Override public void onResponse(Response response) throws IOException { String lenght = response.header("Content-Length"); System.out.println("wisely--lenght:" + lenght); LoginResponse loginResponse = new Gson().fromJson(response.body().charStream(), LoginResponse.class); System.out.println("wisely---" + loginResponse.getMessage()); } @Override public void onFailure(Request arg0, IOException arg1) { System.out.println("wisely-----fail"); } });
String tokeId; boolean result; public boolean isResult() { return result; } public void setResult(boolean result) { this.result = result; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getTokeId() { return tokeId; } public void setTokeId(String tokeId) { this.tokeId = tokeId; } }
Das Obige ist eine einfache Übermittlung eines Anmeldeformulars, bei der die zurückgegebenen JSON-Daten in einer Bean gekapselt werden. Zusätzlich zum Abrufen von JSON-Daten kann auch jeder Nachrichtenheader abgerufen werden.
2. Bilder hochladen
Das ist die Funktion, die mir am meisten am Herzen liegt. Experimente haben gezeigt, dass okHttp eine leistungsstarke Funktion zum Hochladen von Bildern hat und mehrere Bilder unterstützt Uploads.
private MediaType PNG = MediaType.parse("application/octet-stream");
OkHttpClient client = new OkHttpClient(); RequestBody body = new MultipartBuilder() .type(MultipartBuilder.FORM) .addPart(Headers.of("Content-Disposition","form-data; name=\"files\";filename=\"img1.jpg\""),RequestBody.create(PNG, file1)) .addPart(Headers.of("Content-Disposition","form-data; name=\"files\";filename=\"img2.jpg\""),RequestBody.create(PNG, file2)).build(); Request request = new Request.Builder() <span style="white-space:pre"> </span>.url(url) .post(body).build(); client.newCall(request).enqueue(new Callback() { @Override public void onResponse(Response response) throws IOException { if(response.isSuccessful()){ UploadPNGResponse uploadPNGResponse = new Gson().fromJson(response.body().charStream(), UploadPNGResponse.class); String msg = uploadPNGResponse.getMsg(); List<String> list = uploadPNGResponse.getList(); for (String string : list) { System.out.println("wisely---path:"+string); } } } @Override public void onFailure(Request arg0, IOException arg1) { System.out.println("wisely---fail--"+arg1.getCause().getMessage()); } });
class UploadPNGResponse{ String msg; boolean result; List<String> list; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public boolean isResult() { return result; } public void setResult(boolean result) { this.result = result; } public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } }
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung und Beispiele von OkHttp in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!