Heim > Java > javaLernprogramm > Hauptteil

Detaillierte Erläuterung der Verwendung und Beispiele von OkHttp in Java

怪我咯
Freigeben: 2017-07-02 10:29:31
Original
2097 Leute haben es durchsucht

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(); 
}
Nach dem Login kopieren

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"); 
  } 
});
Nach dem Login kopieren

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()); 
  } 
});
Nach dem Login kopieren

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"); 
  } 
});
Nach dem Login kopieren
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; 
  } 
 
}
Nach dem Login kopieren

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");
Nach dem Login kopieren
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()); 
  } 
});
Nach dem Login kopieren
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; 
  } 
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!