特性html
支持同步阻塞調用和具備回調的異步調用。java
OkHttp支持Android 2.3及以上版本。 對於JDK,最低要求是1.7。android
Request是OkHttp中訪問的請求,Builder是輔助類。Response即OkHttp中的響應。git
項目中使用EventBus:github
S1.添加jar包或依賴json
compile 'com.squareup.okhttp3:okhttp:3.8.0'app
compile 'com.squareup.okio:okio:1.13.0'異步
S2.建立POST/GET請求:async
S3.代碼混淆ide
-dontwarn okio.**
-dontwarn javax.annotation.Nullable
-dontwarn javax.annotation.ParametersAreNonnullByDefault
OKHTTP主要方法:
// 建立請求 MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=utf-8"); Request request = new Request.Builder() .post(RequestBody.create(MEDIA_TYPE, json)) .url(url) .build(); // 建立響應 Response response = client.newCall(request).execute(); // sync Response response = client.newCall(request).enqueue(new Callback() { // async @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { } }); // 獲取結果 if (response.isSuccessful()) { response.body().string(); } // 超時設置 // 提交JSON數據示例 public static void postJsonExamAsync() { String url = "http:localhost:8080/login/commitUserInfo"; String postJson = "{}"; RequestBody body = RequestBody.create(MEDIA_TYPE, postJson); Request request = new Request.Builder() .url(url) .post(body) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); } @Override public void onResponse(Call call, Response response) throws IOException { if (!response.isSuccessful()) throw new IOException("Unexpected code " + response); Headers responseHeaders = response.headers(); for (int i = 0; i < responseHeaders.size(); i++) { System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i)); } System.out.println(response.body().string()); } }); }
參考文檔: