okhttp是乙個網路請求類庫,與httpurlconnection是同一級別的,okhttp比起httpurlconnection做了大量的效能優化和在使用上的優化。
第一部分:例項建立
okhttp關鍵的類是okhttpclient。它有兩種構造方式,如下:
1)okhttpclient client = new okhttpclient();//使用構造方法直接建立okhttpclient物件。
2)okhttpclient.builder builder = new okhttpclient.builder();//先建立構建者物件
builder.connecttimeout(3*1000, timeunit.milliseconds);//設定超時時間
okhttpclient client = builder.build();//使用構建者建立okhttpclient物件。
如果使用new的方式建立,內部的引數我們也就使用了預設配置。我們無法修改了。
如果我們想要修改內部的引數來適應專案的需求,我們就要使用建造者模式來建立例項,通過builder來對引數進行設定。
第二部分:request請求類的使用
request是請求類,內部分成四個部分:請求路徑,請求方式,請求header,請求體
httpurl url; //路徑string method; //get或者post方式
okhttp3.headers.builder headers; //header引數
requestbody body; //post的請求體
request類的內部引數的修改,其實也是使用的建造者模式處理的,
request.builder builder = new request.builder();builder.url("***xx");
//修改路徑
builder.method("get"
,null);
//因為預設是get方式
builder.addheader("content"
,"chian");
//新增header
request rq = builder.build();
第三部分:post請求
以上都是不涉及到請求體的,也就是說是get方式的請求,當我們需要使用post請求時,就需要使用到requestbody類了。
1. 通過frombody類建立表單體
formbody.builder formbody = new formbody.builder();//建立表單請求體
formbody.add("username","zhangsan");//傳遞鍵值對引數
formbody.add("password","000000");//傳遞鍵值對引數
requestbody body= formbody.build();
2. 通過 multipartbody類我們可以同時 上傳檔案和鍵值對
multipartbody multipartbody =new multipartbody.builder()
.settype(multipartbody.form)
.addformdatapart("groupid",""+groupid)//新增鍵值對引數
.addformdatapart("title","title")
.addformdatapart("file",file.getname(),requestbody.create(mediatype.parse("file/*"), file))//新增檔案
.build();
OkHttp原始碼徹底解析(五)OkHttp連線池
本系列文章 okhttp原始碼徹底解析 一 okhttp請求流程 okhttp原始碼徹底解析 二 okhttp架構及api原始碼 okhttp原始碼徹底解析 三 okhttp3.0 原理 責任鏈模式 okhttp原始碼徹底解析 四 okhttp 的作用 okhttp原始碼徹底解析 五 okhttp連...
OkHttp原始碼解析
okhttp對外的入口,可以理解為okhttp的平台,其定義了網路協議 dns 請求時間等 網路請求的執行者,enqueue為非同步請求需要傳入okhttpcallback,exexute 為同步請求,直接返回response 網路請求資訊的封裝類,內建url head 請求方式method 請求引...
okhttp原始碼解析
okhttp是乙個非常優秀的網路請求框架,已被谷歌加入到android的原始碼中。目前比較流行的retrofit也是預設使用okhttp的。所以okhttp的原始碼是乙個不容錯過的學習資源,學習原始碼之前,務必熟練使用這個框架,否則就是跟自己過不去。至於為什麼有這麼多優點,各位看官老爺在下面的原始碼...