OkHttps 簡(jiǎn)單示例

2020-07-22 15:15 更新

構(gòu)建 HTTP

HTTP http = HTTP.builder().build();

  以上代碼構(gòu)建了一個(gè)最簡(jiǎn)單的HTTP實(shí)例,它擁有以下三個(gè)方法:

  • async(String url) 開(kāi)始一個(gè)異步請(qǐng)求 (內(nèi)部通過(guò)一個(gè)HTTP單例實(shí)現(xiàn))
  • async() 開(kāi)始一個(gè)異步HTTP任務(wù),使用該方法必須在構(gòu)建時(shí)設(shè)置 BaseUrl
  • sync(String url) 開(kāi)始一個(gè)同步請(qǐng)求 (內(nèi)部通過(guò)一個(gè)HTTP單例實(shí)現(xiàn))
  • sync() 開(kāi)始一個(gè)同步HTTP任務(wù),使用該方法必須在構(gòu)建時(shí)設(shè)置 BaseUrl
  • cancel(String tag) 按標(biāo)簽取消請(qǐng)求(內(nèi)部通過(guò)一個(gè)HTTP單例實(shí)現(xiàn))
  • cancelAll() 取消所有HTTP任務(wù),包括同步和異步(內(nèi)部通過(guò)一個(gè)HTTP單例實(shí)現(xiàn))
  • request(Request request) OkHttp 原生請(qǐng)求 (該請(qǐng)求不經(jīng)過(guò) 預(yù)處理器)
  • webSocket(Request request, WebSocketListener listener) WebSocket通訊

  為了使用方便,在構(gòu)建的時(shí)候,我們更愿意指定一個(gè)BaseUrl(請(qǐng)參見(jiàn)5.1 設(shè)置 BaseUrl):

HTTP http = HTTP.builder()
        .baseUrl("http://api.demo.com")
        .build();

  為了簡(jiǎn)化文檔,下文中出現(xiàn)的http均是在構(gòu)建時(shí)設(shè)置了BaseUrlHTTP實(shí)例。

同步請(qǐng)求

  使用方法sync(String url)開(kāi)始一個(gè)同步請(qǐng)求:

List<User> users = http.sync("/users") // http://api.demo.com/users
        .get()                         // GET請(qǐng)求
        .getBody()                     // 獲取響應(yīng)報(bào)文體
        .toList(User.class);           // 得到目標(biāo)數(shù)據(jù)

  方法sync返回一個(gè)同步HttpTask,可鏈?zhǔn)绞褂谩?/p>

異步請(qǐng)求

  使用方法async(String url)開(kāi)始一個(gè)異步請(qǐng)求:

http.async("/users/1")                //  http://api.demo.com/users/1
        .setOnResponse((HttpResult result) -> {
            // 得到目標(biāo)數(shù)據(jù)
            User user = result.getBody().toBean(User.class);
        })
        .get();                       // GET請(qǐng)求

  方法async返回一個(gè)異步HttpTask,可鏈?zhǔn)绞褂谩?/p>

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)