日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android OkHttp的使用心得

發布時間:2025/7/25 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android OkHttp的使用心得 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

由于Google在Android 6.0版本刪除了HttpClient相關API,在網絡訪問這一塊,OKHttp也是流行起來,趁著最近有空,參考個各路大神關于OKHttp的文章,總結一下其使用心得。


OKHttp依賴包鏈接(https://search.maven.org/remote_content?g=com.squareup.okhttp&a=okhttp&v=LATEST)點擊下載

OkHttp內部依賴包okio鏈接(https://search.maven.org/remote_content?g=com.squareup.okio&a=okio&v=LATEST)點擊下載


二、Http Get請求

public void httpGet() {// 創建okHttpClient對象OkHttpClient mOkHttpClient = new OkHttpClient();// 創建一個Requestfinal Request request = new Request.Builder().url("http://blog.csdn.net/android_mnbvcxz").get().build();// new callCall call = mOkHttpClient.newCall(request);// 請求加入調度call.enqueue(new Callback() {@Overridepublic void onFailure(Request request, IOException e) {}@Overridepublic void onResponse(final Response response) throws IOException {// String htmlStr = response.body().string();}});}


以上就是發送一個get請求的步驟:

1.先構造一個Request對象,參數至少有url,也可以通過Request.Builder設置更多的參數:比如header、mehod等;

2.通過request的對象去構造得到一個Call對象,就是請求封裝成了任務,擁有execute()和cancel()等方法;

3.最后以異步的方式去執行請求,所以調用call.enqueue,將call加入調度隊列,然后等待任務執行完成,即可在CallBack得到結果。


注意

1.onResponse回調的參數是response,一般情況下,比如我們希望獲得返回的字符串,可以通過response.body().string()獲取;如果希望獲得返回的二進制字節數組,則調用response.body().bytes();如果你想拿到返回的inputStream,則調用response.body().byteStream();

2.這里是異步的方式去執行,當然也支持阻塞的方式,上面我們也說了Call有一個execute()方法,你也可以直接調用call.execute()通過返回一個Response。


二、Http Post攜帶參數請求

//post提交鍵值對public void httpPost() {// 創建okHttpClient對象OkHttpClient mOkHttpClient = new OkHttpClient();FormEncodingBuilder builder = new FormEncodingBuilder();// 構造RequestBodyRequestBody requestBody = builder.add("username", "用戶名").add("password", "密碼").build();// 創建一個RequestRequest request = new Request.Builder().url("http://blog.csdn.net/android_mnbvcxz").post(requestBody).build();// 請求加入調度mOkHttpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Request request, IOException e) {}@Overridepublic void onResponse(final Response response) throws IOException {// String htmlStr = response.body().string();}});}//post提交字符串public void httpPostString() {// 創建okHttpClient對象OkHttpClient mOkHttpClient = new OkHttpClient();// 構造RequestBodyRequestBody requestBody = RequestBody.create(MediaType.parse("text/plain;chaset=utf-8"),"'username':'用戶名','passwored':'密碼'");// 創建一個RequestRequest request = new Request.Builder().url("http://blog.csdn.net/android_mnbvcxz").post(requestBody).build();// 請求加入調度mOkHttpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Request request, IOException e) {}@Overridepublic void onResponse(final Response response) throws IOException {// String htmlStr = response.body().string();}});}//post提交Filepublic void httpPostFile() {//1、 創建okHttpClient對象OkHttpClient mOkHttpClient = new OkHttpClient();//2、構造RequestBodyFile file = new File(Environment.getExternalStorageDirectory(),"banner.jpg");if (!file.exists()) {Log.e("error_tag", file.getAbsolutePath() + "not exist!");return;}//mime typeRequestBody fileBody=RequestBody.create(MediaType.parse("application/octet-stream"), file);//3、創建一個RequestRequest request = new Request.Builder().url("http://blog.csdn.net/android_mnbvcxz").post(fileBody).build();//4、請求加入調度mOkHttpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Request request, IOException e) {}@Overridepublic void onResponse(final Response response) throws IOException {// String htmlStr = response.body().string();}});}?

這里的post請求攜帶參數,也僅僅是Request的構造的不同。

1、在httpPost()方法中,參數是包含在請求體中的;所以我們通過FormEncodingBuilder。添加多個String鍵值對,然后去構造RequestBody,最后完成我們Request的構造。

2、在httpPostString()的方法里參數是一個字符串,所以不需要FormEncodingBuilder這個構造者模式,只需要使用Requestbody的靜態方法create即可。

3、在httpPostFile()方法中只是提交了一個文件,所以和httpPostString()一樣,使用使用Requestbody的靜態方法create


注意

在使用Requestbody的靜態方法create時中的若不清楚文件類型的MediaType,可以查看這篇文章http://blog.csdn.net/android_mnbvcxz/article/details/65441571點擊打開鏈接



總結

以上是生活随笔為你收集整理的Android OkHttp的使用心得的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。