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

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

怪我咯
怪我咯Original
2017-07-02 10:29:312121Durchsuche

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!

Stellungnahme:
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