okhttp3學習筆記

2021-09-29 19:11:52 字數 3604 閱讀 9159

面試使人能夠更正確的認識自己,通過這一輪的面試,我發現自己的基礎知識還是有欠缺的。而且我的記性是真不好,很多寫過的**,通過很長時間的思考和摸索才做出來的效果,過不了多久都忘了,因此我決定把平時常用的,我寫專案的過程中遇到的困難,解決的方法都一一記錄下來,同時,也把平時學習新知識的筆記寫在這裡。

這一篇記錄我學習okhttp3 分以下幾個內容:

1.okhttp3的使用

2.http協議詳解

3.okhttp3的簡單封裝

1.使用前準備:

android studio配置:

新增網路許可權:

uses-permission android:name="android.permission.internet"

2.get請求:

當然如果想要改為同步的上傳檔案只要呼叫 mokhttpclient.newcall(request).execute()就可以了。

當然不要忘了新增如下許可權:

uses-permission android:name="android.permission.read_external_storage"

uses-permission android:name="android.permission.write_external_storage"

private void downasynfile()

@override

public void onresponse(call call, response response) catch (ioexception e)

6.設定超時時間和快取

和okhttp2.x有區別的是不能通過okhttpclient直接設定超時時間和快取了,而是通過okhttpclient.builder來設定,通過builder配置好okhttpclient後用builder.build()來返回okhttpclient,所以我們通常不會呼叫new okhttpclient()來得到okhttpclient,而是通過builder.build():

http協議中通訊的兩方稱作client和server,client向server端經過http協議傳送乙個request,server端收到request後經過一系列的處理返回client乙個response。

超文字傳輸協議

作用:設計之初是為了將超文字標記語言(html)文件從web伺服器傳送到客戶端的瀏覽器。現在http的作用已不侷限於html的傳輸。

schema:指定底層使用的協議:http/https/ftp

port:http伺服器預設埠是80,這種情況下埠號可以省略。如果用了別的埠,必須指明

path:訪問的資源路徑:/st/test

query-string:傳送給http伺服器的資料 name=user&pwd=123456

http是無狀態的,同乙個客戶端的這次請求和上次請求是沒有對應關係的,對http伺服器來說,它並不知道這兩個請求來自同乙個客戶端,這時候就需要cookie機制來維護狀態。

由三部分組成:

request line (請求行), http header ,body

請求行:包括http請求的種類,請求資源的路徑,http協議版本

http header:http頭部資訊

body:傳送給伺服器的query資訊(當使用get時,body是空的,get只能讀取伺服器上的資訊,post能寫入)

request line :協議版本

requeset header :request頭資訊

body:返回的請求資源主體,就是伺服器返回的內容

http協議定義了許多與伺服器互動的方法,最基本的有4種,分別是get,post,put,delete.乙個url位址用於描述乙個網路上的資源,而http中的get post put delete對應著查,改,增,刪4個操作。最常見的get和post.get一般用於獲取/查詢資訊,post一般用於更新資源資訊。

1. get提交的資料會放在url之後,以?分割url和傳輸資料,引數之間以&相連。post是吧提交的資料放在http包的body中。

2. get提交的資料大小有限制(因為瀏覽器對於url的長度有限制)而post方法提交的資料沒有限制。

3. get方式提交資料,會帶來安全問題,比如乙個登入頁面,通過get方式提交資料時,使用者名稱和密碼將出現在url上,如果頁面可以被快取或者其他人可以訪問這台機器,就可以從歷史記錄獲取該賬號密碼

http1.1中定義了5類狀態碼,狀態碼又三位數字組成,第乙個數字定義了響應的類別。

1xx:指示資訊 表示請求已接受,繼續處理

2xx:成功 表示請求已被成功接收,理解,接受。

3xx:重定向 要完成請求必須進行進一步的操作

4xx:客戶端錯誤 請求有語法錯誤或請求無法實現

5xx:伺服器端錯誤,伺服器未能實現合法的請求

常見:200 ok

400 bad request 客戶端請求有語法錯誤,不能被伺服器理解。

401 請求未經授權,這個狀態碼必須和www-authenticate報頭域一起使用

403 伺服器收到請求,但是拒絕提供服務

404 請求資源不存在 可能是輸入了錯誤的url

500 伺服器發生不可預期的錯誤

505 伺服器當前不能出了客戶端的請求,一段時間後可能恢復

OKHttp3學習記錄

一 概述 okhttp作為時下android開發最火熱的網路請求框架,學習下還是很有必要的,記錄學習過程方便以後查詢,guthub位址在android studio中新增依賴 新增網路許可權 二 使用 主要分為這幾步 1.建立okhttpclient物件 2.建立request包括請求體,具體為引數...

OkHttp3簡單使用

複製 目前最新的穩定版可能已經不是3.11.0了,可以到官方github來檢視最新版本 github.com square okht get 預設就是get請求,可以不寫 複製 與get相比,post多了乙個請求體 requestbody 複製 string url 複製 okhttpclient ...

OkHttp3原始碼解析

compile com.squareup.okhttp3 okhttp 3.6.0 最新版本 okhttp的最底層是使用socket,而不是urlconnection,它通過platform的class.forname 反射獲得當前runtime使用的socket庫。okhttp3使用場景特點 資料...