[Android] Retrofit源码解析之POST、GET请求
2018-03-09 21:33
267 查看
需要注意的是:下面说的GET请求和POST请求里面的@的方法,不是说只属于它们自己,灵活点。比如@path既适用于@GET也适用于@POST
@Url
@path 动态更改位于URL中的路径
使用 @QuerryMap 或者@Querry
HTTP请求的完整URL是:www.baidu.com/api?name=allen&sex=male&food=apple
基础URL:
请求方式:
网络请求:
- POST请求一般分为两种传输实体到后台,表单和JSON
使用表单 @FieldMap 或者@Field
HTTP请求的完整URL是:www.baidu.com/api
通过表单提交,注意的是传输的时候表单需要进行UrlEncode编码:
参数Parameters为name,Vaule为allen。
参数Parameters为sex,Vaule为male。
基础URL:
请求方式:
网络请求:
直接使用表单 @Part 或者@PartMap
HTTP请求的完整URL是:www.baidu.com/api
通过表单提交,一般用于文件的上传。
参数Parameters为name,Vaule为allen。
参数Parameters为sex,Vaule为male。
基础URL:
请求方式:
参考资料:
这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)
GET请求(获取资源)
用来请求访问已被URI识别的资源,指定的资源经服务端解析后返回响应内容。对于Retrofit2.0中的Get请求:@Url
作用:直接传入一个请求的 URL变量 用于URL设置 具体使用: public interface MyService { @GET Call<Bean> getInfo(@Url String url, @Query String("name") String name); // 当有URL注解时,@GET传入的URL就可以省略 // 当GET、POST...HTTP等方法中没有设置Url时,则必须使用 {@link Url}提供 }
@path 动态更改位于URL中的路径
public interface MyService { @GET("api/{page}") Call<Bean> getInfo(@Path("page") String page); // 访问的API是:www.baidu.com/api/{page} // 在发起请求时, {user} 会被替换为方法的第一个参数 user(被@Path注解作用) }
使用 @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<Bean> getInfo(@Query String("name") String name, @Query("sex") String sex, @Query("food") String food); //第二种和第一种是一样的 @GET("api? ") Call<Bean> getInfo(@QueryMap HashMap<String,String> map); }
网络请求:
//第一种 Call<Bean> call = MyService .getInfo( "allen","male","apple"); call.enqueue(new Callback<Bean>() { ...... ......... ............... }); //第二种 HashMap<String, String> myHashMap = new HashMap<>(); myHashMap .put ("name", allen); myHashMap .put ("sex", male); myHashMap .put ("food", apple); Call<Bean> call = MyService .getInfo(myHashMap); call.enqueue(new Callback<Bean>() { ...... ......... ............... });
POST请求(传输实体主体)
四种常见的 POST 提交数据方式对应的content-type取值- 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<Bean> getPerson(@Field("name") String name,@Field("sex") String sex); //第二种和第一种是相同的 @FormUrlEncoded @POST("api") Call<Bean> getPerson(@FieldMap HashMap<String,String> map); }
网络请求:
//第一种 Call<Bean> call = MyService .getPerson( "allen","male"); call.enqueue(new Callback<Bean>() { ...... ......... ............... }); //第二种 HashMap<String, String> myHashMap = new HashMap<>(); myHashMap .put ("name", allen); myHashMap .put ("sex", male); Call<Bean> call = MyService .getPerson(myHashMap); call.enqueue(new Callback<Bean>() { ...... ......... ............... });
直接使用表单 @Part 或者@PartMap
HTTP请求的完整URL是:www.baidu.com/api
通过表单提交,一般用于文件的上传。
参数Parameters为name,Vaule为allen。
参数Parameters为sex,Vaule为male。
基础URL:
BaseUrl = "www.baidu.com/";
请求方式:
参考资料:
这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解)
相关文章推荐
- android网络框架retrofit源码解析四
- android网络框架retrofit源码解析一
- Android 网络框架之Retrofit2使用详解及从源码中解析原理
- 【Android源码解析】View.post()到底干了啥
- Android网络编程(十一)源码解析Retrofit
- android网络框架retrofit源码解析二
- Android 玩转IOC,Retfotit源码解析,教你徒手实现自定义的Retrofit框架
- Android 玩转IOC,Retfotit源码解析,教你徒手实现自定义的Retrofit框架
- Android 网络框架之Retrofit2使用详解及从源码中解析原理
- [置顶] Android 网络框架之Retrofit2使用详解及从源码中解析原理
- Android Retrofit源码解析
- Android 网络框架之Retrofit2使用详解及从源码中解析原理
- Android 源码解析 Retrofit2 原理
- Android源码设计模式解析与实战(十二)
- Android AsyncTask 源码解析
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android Activity的启动过程源码解析
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android 源码设计模式解析与实战 第2版 读书笔记1.6迪米特原则
- Android 带你从源码的角度解析Scroller的滚动实现原理