Android :Retrofit源码解析之POST、GET请求
程序员文章站
2022-04-22 19:33:51
GET请求(获取资源)
用来请求访问已被URI识别的资源,指定的资源经服务端解析后返回响应内容。对于Retrofit2.0中的Get请求:
使用 @QuerryMap 或者@Q...
GET请求(获取资源)
用来请求访问已被URI识别的资源,指定的资源经服务端解析后返回响应内容。对于Retrofit2.0中的Get请求:使用 @QuerryMap 或者@Querry
HTTP请求的完整URL是:www.baidu.com/api?name=allen&sex=male&food=apple
基础URL:
BaseUrl = "www.baidu.com/";
请求方式:
public interface MyService { //第一种 @GET("api? ") Call getInfo(@Query String("name") String name, @Query("sex") String sex, @Query("food") String food); //第二种和第一种是一样的 @GET("api? ") Call getInfo(@QueryMap HashMap map); }
网络请求:
//第一种 Call call = MyService .getInfo( "allen","male","apple"); call.enqueue(new Callback() { ...... ......... ............... }); //第二种 HashMap myHashMap = new HashMap<>(); myHashMap .put ("name", allen); myHashMap .put ("sex", male); myHashMap .put ("food", apple); Call call = MyService .getInfo(myHashMap); call.enqueue(new Callback() { ...... ......... ............... });
POST请求(传输实体主体)
POST请求一般分为两种传输实体到后台,表单和JSON使用表单 @FieldMap 或者@Field
HTTP请求的完整URL是:www.baidu.com/api
通过表单提交,注意的是传输的时候表单需要进行UrlEncode编码:
参数Parameters为name,Vaule为allen。
参数Parameters为sex,Vaule为male。
基础URL:
BaseUrl = "www.baidu.com/";
请求方式:
public interface MyService { //第一种 @FormUrlEncoded @POST("api") Call getPerson(@Field("name") String name,@Field("sex") String sex); //第二种和第一种是相同的 @FormUrlEncoded @POST("api") Call getPerson(@FieldMap HashMap map); }
网络请求:
//第一种 Call call = MyService .getPerson( "allen","male"); call.enqueue(new Callback() { ...... ......... ............... }); //第二种 HashMap myHashMap = new HashMap<>(); myHashMap .put ("name", allen); myHashMap .put ("sex", male); Call call = MyService .getPerson(myHashMap); call.enqueue(new Callback() { ...... ......... ............... });