Maison >Java >javaDidacticiel >Explication détaillée de l'utilisation et exemples d'OkHttp en Java
Cet article présente principalement les méthodes d'utilisation et des exemples d'OkHttp en Java. Les amis qui en ont besoin peuvent se référer à
Les méthodes d'utilisation et des exemples d'OkHttp en Java
Vue d'ensemble
Préparez-vous à étudier Retrofit, et il repose sur OkHttp, alors utilisez d'abord OkHttp, sans vous plonger dans le code source, explorez simplement comment l'utiliser. Je vérifierai à nouveau le code source lorsque j'en aurai l'occasion.
Avant de continuer, vous avez d'abord besoin de 2 packages jar, dont l'un est le package jar okHttp, qui peut être téléchargé depuis github, et l'autre est son package de dépendances. Sans cela, le projet est très critique. ne peut pas courir.
Deux façons de demander OkHttp
Il n'est pas difficile de deviner qu'en ce qui concerne les requêtes réseau, il n'y a que deux façons, l'une est d'utiliser rappels, et l'autre est Le premier est de démarrer l'exécution du thread enfant.
Le premier : démarrer l'exécution du sous-thread
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(); }
Le deuxième : utiliser les rappels, j'aime personnellement utiliser ce meilleur. (PS : je me sens trop jeune et trop simple !! Je pensais au départ que la méthode de rappel était dans le thread principal, mais il s'est avéré que c'était un sous-thread, un sous-thread....)
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 obtenir la demande
Obtenir photo
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()); } });Écrivez uniquement le code clé, et le code correspondant du gestionnaire n'a pas été écrit.
La demande de publication d'OkHttp
1. Le premier est le formulaire de soumission le plus couramment utilisé.
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; } }Ce qui précède est un simple formulaire de connexion, dans lequel les données json renvoyées sont encapsulées dans un bean. En plus d'obtenir des données json, chaque en-tête de message peut également être obtenu.
2. Télécharger des images
C'est la fonction qui me tient le plus à cœur. Les expériences ont prouvé que okHttp a une fonction puissante de téléchargement d'images et prend en charge plusieurs images. téléchargements.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()); } });
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!