okhttp3的使用
目錄
1. 簡介
2. 依賴
3. 混淆
4. GET請求
5. POST請求: 提交Form表單
6. POST請求: 提交Json數據
簡介
okhttp官網: http://square.github.io/okhttp/
okio官網: https://github.com/square/okio
依賴
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
混淆
# Okhttp3的混淆配置 # JSR 305 annotations are for embedding nullability information. -dontwarn javax.annotation.** # A resource is loaded with a relative path so the package of this class must be preserved. -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* # OkHttp platform used only on JVM and when Conscrypt dependency is available. -dontwarn okhttp3.internal.platform.ConscryptPlatform
GET請求
//創建OkHttpClient對象 OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(10,TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .build(); //請求的url String requestUrl = "http://www.geaosu.com/app/user/updatainfo?userName=geaosu"; final Request request = new Request.Builder() .url(requestUrl) //請求地址 .get() //設置請求方式: get()方式和post()方式, 默認請求方式為GET .build(); //構建一個請求Request對象 //創建Call Call call = okHttpClient.newCall(request); //加入隊列 異步操作 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //請求失敗的監聽: 異步請求(非主線程) System.out.println("連接失敗"); } @Override public void onResponse(Call call, Response response) throws IOException { //請求成功的監聽: 異步請求(非主線程) if(response.code()==200) { System.out.println(response.body().string()); } });
POST請求: 提交Form表單
//構造OkHttpClient對象 OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(10,TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .build(); //配置POST要提交的數據 --> FormBody FormBody formBody = new FormBody.Builder() .add("userName", "geaosu") .add("userMail", "geaosu@163.com") .build(); //請求地址 String requestUrl = "http://www.geaosu.com/app/user/updatainfo"; //構造請求 final Request request = new Request.Builder() .url() .post(formBody) .build(); //構造Call Call call = okHttpClient.newCall(request); //加入請求隊列 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //請求失敗監聽: 異步請求(非主線程) System.out.println("連接失敗"); } @Override public void onResponse(Call call, Response response) throws IOException { //請求成功監聽: 異步請求(非主線程) if(response.code()==200) { System.out.println(response.body().string()); } } });
POST請求: 提交Json數據
//構造okhttp客戶端 OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .readTimeout(20, TimeUnit.SECONDS) .build(); //配置參數: json數據(key和value) HashMap<String, String> map = new HashMap<>(); map.put("userQQ", "819813992"); map.put("userName", "geaosu"); map.put("userMail", "geaosu@163.com"); map.put("userWeChat", "geaosu"); //將map轉成json字符串 Gson gson = new Gson(); String json = gson.toJson(map); //轉換結果: "{"userWeChat":"geaosu","userQQ":"819813992","userName":"geaosu","userMail":"geaosu@163.com"}" //MediaType 設置Content-Type 標頭中包含的媒體類型值 RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json); //請求地址 String url = "http://www.geaosu.com/app/user/updatainfo"; //構造請求 Request request = new Request.Builder() .url(url) //請求地址 .post(requestBody) //請求方式: POST .build(); //創建Call Call call = okHttpClient.newCall(request); //加入請求隊列 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //請求失敗監聽: 異步請求(非主線程) System.out.println("連接失敗"); } @Override public void onResponse(Call call, Response response) throws IOException { //請求成功監聽: 異步請求(非主線程) System.out.println(response.body().string()); } });
華麗的分割線 --------------------------------------------------------------------------------->> 完