Retrofit如何實現Form表單提交和Json提交
我們都知道在Http請求方法中一般分為Get和Post請求。但是實際上不止這兩種:HTTP/1.1協議中共定義了八種方法(有時也叫“動作”),來表明Request-URL指定的資源不同的操作方式。
1、OPTIONS
返回伺服器針對特定資源所支援的HTTP請求方法,也可以利用向web伺服器傳送‘*’的請求來測試伺服器的功能性
2、HEAD
向伺服器索與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以再不必傳輸整個響應內容的情況下,就可以獲取包含在響應小訊息頭中的元資訊。
3、GET
向特定的資源發出請求。它本質就是傳送一個請求來取得伺服器上的某一資源。資源通過一組HTTP頭和呈現資料(如HTML文字,或者圖片或者視訊等)返回給客戶端。GET請求中,永遠不會包含呈現資料。
4、POST
向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 Loadrunner中對應POST請求函式:web_submit_data,web_submit_form
5、PUT
向指定資源位置上傳其最新內容
6、DELETE
請求伺服器刪除Request-URL所標識的資源
7、TRACE
回顯伺服器收到的請求,主要用於測試或診斷
8、CONNECT
HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器。
注意:
1)方法名稱是區分大小寫的,當某個請求所針對的資源不支援對應的請求方法的時候,伺服器應當返回狀態碼405(Mothod Not Allowed);當伺服器不認識或者不支援對應的請求方法時,應返回狀態碼501(Not Implemented)。
2)HTTP伺服器至少應該實現GET和HEAD/POST方法,其他方法都是可選的,此外除上述方法,特定的HTTP伺服器支援擴充套件自定義的方法。
當然本文重點不是介紹Http的請求方法,本文重點介紹的是Android中目前比較流行的網路框架-Retrofit,它是如何實現不同的Http請求的。在實際開發中,最常用的就是Post請求中的兩種提交方式:Form表單提交,和Json提交。而Rertofit中都是通過註解來實現的,下面我們分別通過程式碼來介紹:
Retrofit實現Form提交
我們知道Form表單提交,後臺伺服器是以鍵值對的形式來接受引數的,所以Retrofit也很聰明,把介面引數通過Map的形式來提交。使用@FieldMap,@POST註解
/** * 登入 * post * 表單提交 * * @param map * @return */ @FormUrlEncoded @POST("login") Flowable<BaseDto<LoginDto>> login(@FieldMap Map<String, String> map);
Retrofit實現Json提交
而Json提交,顧名思義就是可以把物件直接轉換成Json字串,提交到後臺伺服器。所以我們直接傳遞整個物件即可。Retrofit會幫我們把物件轉換成Json,然後傳遞給後臺伺服器。使用@Body ,@POST註解
/** * 簽到詳情 * * @param vo * @return */ @POST("sign/getDate") Flowable<BaseDto<SignDetailDto>> signGetDate(@Body SignDetailVo vo);