《一》四种请求方式:

GET

向服务器发起数据请求,获取信息。类似于数据库的select操作,只是查询,不会影响资源的内容。

POST

向服务器发送数据,该请求会改变数据的种类等资源。类似于数据库的insert操作,会创建新的内容。

DELETE

用来删除某一个资源。类似于数据库的delete操作。

PUT

向服务器发送数据,从而改变信息。类似于数据库的update操作,用来修改内容。

《二》Retrofit通过注解的方式,配置不同的网络请求。主要涉及到@Path、@Query、@QueryMap、@Body、@Field的用法等。

假设你的BASE_URL = "http://192.168.0.1/"

1、GET请求:

(1)情形一:@Query仅带查询参数:http://192.168.0.1/weather?city=北京

   @GET("weather")Observable<WeatherEntity> getWeather(@Query("city") String city);
复制代码

(2)情形二:@Path请求参数直接跟在请求路径下:http://192.168.0.1/weather/北京

    @GET("weather/{city_name}")Observable<Object> getWeather(@Path("city_name") String city_name);
复制代码

(3)情形三:@Path和@QueryMap结合 此种情形用得比较少:http://192.168.0.1/weather/北京?user_id=1&user_name=jojo

    @GET("weather/{city_name}")Observable<Object> getWeather(@Path("city_name")String city_name, @QueryMap Map<String, String> queryParams);
复制代码
    HashMap<String, String> queryParams= new HashMap<>();hashMap.put("user_id","1");hashMap.put("user_name","jojo");
复制代码

2、POST请求:

(1)情形一: http://192.168.0.1/comment
body参数:{"comment_id":"1","content":"我是评论","user_id":"1001"}
@Filed 方式处理

    @FormUrlEncoded //使用@Field时记得添加@FormUrlEncoded@POST("comment")void doComments(@Field("comment_id")String comment_id, @Field("content")String content, @Field("user_id") String user_id);
复制代码

@FieldMap 方式处理

    @FormUrlEncoded@POST("comment")void doComments(@FieldMap Map<String, String> paramsMap );
复制代码

通过键值对,以表单的形式提交:

        HashMap<String, String> hashMap = new HashMap<>();hashMap.put("comment_id","1");hashMap.put("content","我是评论");hashMap.put("user_id","1001");
复制代码

@Body方式处理

    @POST("comment")void doComments(@Body Object reqBean);
复制代码
   @POST("comment")void doComments(@Body List<Object> requestList);
复制代码

(2)情形二:Retrofit文件上传: http://192.168.0.1/upload/

  /*** 文件上传*/@POST("upload/")Observable<Object> uploadFile(@Body RequestBody requestBody);
复制代码

只不过文件上传传入的是RequestBody类型,下面是构建RequestBody的方式:

        File file = new File(mFilePath); //mImagePath为上传的文件绝对路径//构建bodyRequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("multipart/form-data"), file)).build();
复制代码

1、PUT请求:

(1)情形一:http://192.168.0.1/comment/88

    @PUT("comment/{comment_id}")void comment(@Path("comment_id") String comment_id);
复制代码

(2)情形二:http://192.168.0.1/comment/88?user_id=1001

    @PUT("comment/{comment_id}")void comment(@Path("comment_id") String comment_id @Query("user_id") String user_id);
复制代码

(3)情形三:http://192.168.0.1/comment/88?user_id=1001 加body参数:{"content":"我是评论","type":"1"}

此类请求的应用场景:适合于body中需要传入多个请求参数,这样可以将多个请求的参数字段封装到一个实体中,这样就不用写多个@Filed了。

public class RequestBean {public String content;public String type;//实际中可能还有多个请求字段
}
复制代码
    RequestBean  requestBean = new RequestBean();requestBean .content = "我是评论";requestBean .type = "1";
复制代码
    @PUT("comment/{comment_id}")void comment(@Path("comment_id") String comment_id @Query("user_id") String user_id @Body RequestBean reqBean);
复制代码

1、DELETE请求:

假如删除评论:http://192.168.0.1/comment/88

    @DELETE("comment/{comment_id}")void comment(@Path("comment_id") String comment_id);
复制代码

其他可能的delete请求,配置方式都是类似的,这里就不多举例了。主要是要好好理解下面这些常用的请求参数注解的作用和用法。 综上所述,可以归纳出上面几个注解的用法: @Path : 请求的参数值直接跟在URL后面时,用@Path配置 @Query: 表示查询参数,以?key1=value1&key2=value2的形式跟在请求域名后面时使用@Query @QueryMap :以map的方式直接传入多个键值对的查询参数 @Field: 多用于post请求中表单字段,每个@Field后面,对应一对键值对。 @FieldMap :以map的方式传入多个键值对,作为body参数 @Body: 相当于多个@Field,以对象的形式提交

注意:Filed和FieldMap需要FormUrlEncoded结合使用,否则会抛异常!

更多配置URL请求路径的注解的了解可以参考: [Retrofit网络请求参数注解](https://blog.csdn.net/jdsjlzx/article/details/52015347) [Retrofit常用注解解释](https://blog.csdn.net/jdsjlzx/article/details/52015347)

轻松搞定Retrofit不同网络请求方式的请求参数配置,及常用注解使用相关推荐

  1. 52讲轻松搞定网络爬虫(笔记)

    52讲轻松搞定网络爬虫 模块一:爬虫基础原理 1.HTTP基本原理 请求 响应 2.Web网页基础 网页的组成--HTML.CSS.JS 节点树 CSS选择器 3. 了解爬⾍的基本原理 获取⽹⻚: 提 ...

  2. 轻松搞定JSONP跨域请求

    轻松搞定JSONP跨域请求 一.同源策略 要理解跨域,先要了解一下"同源策略".所谓同源是指,域名,协议,端口相同.所谓"同源策略",简单的说就是基于安全考虑, ...

  3. 轻松搞定阿里OSS文件上传和图片下载

    轻松搞定阿里OSS文件上传和图片下载 目录 1. 阿里云oss账号准备   1.1 注册阿里云账号,并开通OSS存储服务   1.2 创建RAM子用户并使用子账户的AccessKeyId和Access ...

  4. 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul

    通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...

  5. c# socket接收字符串_socket通信很难?这一文让你轻松搞定!

    目录 概述 TCP/IP协议.UDP协议 Socket是什么 socket通信流程 socket编程php代码实战 php7进阶到架构师相关阅读 概述 这是关于php进阶到架构之php7核心技术与最佳 ...

  6. fastreport dll_报表如何连接到VistaDB嵌入式数据库?FastReport.Net轻松搞定

    Vista数据库属于嵌入式数据库的类型.这些数据库与客户端服务器数据库的不同之处在于,它们被设计为作为文件嵌入客户端应用程序中.这样的基础的任务范围也将与数据库不同.通常,这些是仅在一个应用程序中使用 ...

  7. 9月20日云栖精选夜读 | 如何轻松搞定数据科学面试:Python&R语言篇

    对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理.分析和可视化. 在过去几年,R语言和Python成了进行数据科学中最炙手可热的两种语言.这两种语言各有优缺点,掌握这两种语言大 ...

  8. 读取、回收和重用:使用 Excel、XML 和 Java 技术轻松搞定报告,第 2 部分

    本周您推脱老板的 #432 创新理由了吗?您是否尝试过推脱? 本系列的其他文章 读取.回收和重用:使用 Excel.XML 和 Java 技术轻松搞定报告,第 1 部分 有幸的是,您不必推脱.本系列的 ...

  9. Iphone手机企业邮箱设置 九步轻松搞定

    Iphone手机企业邮箱设置 九步轻松搞定 随着IPhone4S.IPhone5.小米系列手机的爆棚热销,智能手机迅速成为我们生活必备品.智能手机的便捷性也是随时随地都能派上用场.轻便自不必说,电话沟 ...

最新文章

  1. 用python画小猪佩奇(非原创)
  2. 磁盘被占满   系统出现 no space left on 报错(block被占满/inode被占满)
  3. jquery file upload 后台收到的文件名中文乱码, filename中文乱码
  4. 三相逆变器双pi控制器参数如何调节_一分钟看懂维也纳三相整流器
  5. Typora入门基本教程
  6. java装箱与拆箱_【转】java 自动装箱与拆箱
  7. nginx linux 系统服务,把ngnix注册为linux服务 将Nginx设置为linux下的服务
  8. 分享一次学习中遇到的问题
  9. HTML自我介绍表格代码制作
  10. 电容在电路中的几种作用
  11. C++字母大小写转换
  12. Unsupported operation: dart:isolate is not supported on dart4web
  13. Java 编程技术大全(上)实战练习 cp1-cp3
  14. C++: 猴子选大王
  15. PADS打开.asc文件
  16. 关于dva框架的二三事
  17. java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。
  18. egret的eui.List滚动
  19. 初心不改、“疫”别多日,盛会重启2022上海生物发酵展全新归来
  20. 当当网年中图书大促来了,全年买书最好时机

热门文章

  1. android 网络调试 源代码,一个步骤教你调试Android系统源代码
  2. ajax php计数,jQuery+PHP+Ajax动态数字统计展示实例
  3. 微型计算机显卡必须插在主板的,第一章 计算机基础知识(2)
  4. 启动ipython_ipython,_ipython 启动错误,ipython - phpStudy
  5. logback的使用和logback.xml详解
  6. 正则表达式之?、(?:pattern)、(?!pattern)、(?=pattern)理解及应用
  7. oracle中间件微信公众号,对TP5.1中间件融合微信公众号代码的优化
  8. 第十六届全国大学生智能车竞赛全国总决赛报名信息汇总
  9. 滴定数据处理结果分析
  10. 工科学生懂艺术,魔鬼神仙挡不住