Retrofit 2.0使用(2)如何使用@Body的形式发送Post
在使用Retrofit的时候如果只是有几个参数我们可以用@Querry的形式,然后需要使用','隔开
但是在需要@Querry的参数多了之后,如果再用上面的方式就会造成参数写了一大堆的麻烦事
所以Retrofit就提供了@Body 的形式来帮助我们处理这种事务
下面看代码吧
public interface LoginApiService {
@Headers({"Content-Type: application/json","Accept: application/json"})
@POST("server?")
Observable<GetLoginJson> Login(@Body RequestBody body);
}
这是他的API接口,需要在开头@Header 然后后面的值。。。。。( ▼-▼ )!讲道理我现在还没弄明白为啥这样写,有啥规律可循,后面搞懂了再来补上
补上:!
Content-Type 表示请求信息的格式,这个在Spring MVC里有应用
然后application/json 就代表json数据格式,当然还有很多其他的格式,这个有兴趣可以去查阅一下
/***20161125修改**/
无意间在简书上找到了@Header和@Headers的说明
@Header:header处理,不能被互相覆盖,用于修饰参数,
//动态设置Header值
@GET("user")
Call<User> getUser(@Header("Authorization") String authorization)
@Headers 用于修饰方法,用于设置多个Header值:
@Headers({
"Accept: application/vnd.github.v3.full+json",
"User-Agent: Retrofit-Sample-App"
})
@GET("users/{username}")
Call<User> getUser(@Path("username") String username);
。。。。。( ▼-▼ )!表示还是不懂Headers的写法啊
引用自简书作者@BoBoMEe
/***20161125编辑 end**/
然后你需要做的是封装一个Post请求的类
public class PostInfo {
private PostInfoBean postInfoBean;
public PostInfoBean getPostInfoBean() {
return postInfoBean;
}
public void setPostInfoBean(PostInfoBean postInfoBean) {
this.postInfoBean = postInfoBean;
}
public class PostInfoBean{
private String command;
private String posModel;
private String posSn;
private String posMac;
private String userId;
private String passWord;
/**get 省略*/
/**set 省略*/
}
然后使用Retrofit的时候在你实例了ApiService那个接口之后,还需要实例化一个请求Header
实例化完成之后由于我这边服务器接收的是Json类型的请求,我还需要用Gson将他转成Json字符串的形式,然后再(很重要)通过RequestBody(包含于Okhttp包中)类转化为RequestBody,之后再调用API接口即可
LoginApiService loginApiService = mRetrofit.create(LoginApiService.class);
PostInfo postInfo = new PostInfo();
PostInfo.PostInfoBean postInfoBean = postInfo.new PostInfoBean();
postInfoBean.setCommand("xxx");
postInfoBean.setPosModel("xx");
postInfoBean.setPosSn(getPhoneSn());
postInfoBean.setPosMac(getPhoneMac());
postInfoBean.setUserId("xx");
postInfoBean.setPassWord("xx");
postInfoBean.setVersion("xx");
postInfo.setPostInfoBean(postInfoBean);
Gson gson = new Gson();
String postInfoStr = gson.toJson(postInfoBean);
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),postInfoStr);
loginApiService.Login(body)
.xxx.xxx;
Retrofit 2.0使用(2)如何使用@Body的形式发送Post的更多相关文章
- Android Retrofit 2.0 使用-补充篇
推荐阅读,猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava 4.RxBus 5.Android MVP+Retrofit+RxJava实践小 ...
- Retrofit 2.0使用
最近在想能不能把之前项目里的网络请求改下 想通过Retrofit重构下,因为Retrofit完美兼容Rxjava后面会用到Rxjava 所以 开个坑写点 由于网上Retrofit 2.0的架构介绍很详 ...
- Retrofit 2.0 超能实践(四),完成大文件断点下载
作者:码小白 文/CSDN 博客 本文出自:http://blog.csdn.net/sk719887916/article/details/51988507 码小白 通过前几篇系统的介绍和综合运用, ...
- Retrofit 2.0 超能实践(三),轻松实现文件/多图片上传/Json字符串
文:http://blog.csdn.net/sk719887916/article/details/51755427 Tamic 简书&csdn同步 通过前两篇姿势的入门 Retrofit ...
- Retrofit 2.0 超能实践(一),okHttp完美支持Https传输
http: //blog.csdn.net/sk719887916/article/details/51597816 Tamic首发 前阵子看到圈子里Retrofit 2.0,RxJava(Andro ...
- Retrofit 2.0 超能实践,完美支持Https传输
http://blog.csdn.NET/sk719887916/article/details/51597816 前阵子看到圈子里Retrofit 2.0,RxJava(Android), OkHt ...
- android -------- Retrofit + RxJava2.0 + Kotlin + MVP 开发的 WanAndroid 项目
简介 wanandroid项目基于 Retrofit + RxJava2.0 + Kotlin + MVP 用到的依赖 implementation 'io.reactivex.rxjava2:rxj ...
- Retrofit 2.0基于OKHttp更高效更快的网络框架 以及自定义转换器
时间关系,本文就 Retrofit 2.0的简单使用 做讲解 至于原理以后有空再去分析 项目全面.简单.易懂 地址: 关于Retrofit 2.0的简单使用如下: https://gitee.c ...
- Android Retrofit 2.0使用
实例带你了解Retrofit 2.0的使用,分享目前开发Retrofit遇到的坑和心得. 添加依赖 app/build.gradle 1 compile 'com.squareup.retrofit2 ...
随机推荐
- oracle从零开始学习笔记
查询现有数据库:select name from V$database; 解锁用户scott:alter user scott account unlock; 普通用户连接:conn scott 默认 ...
- LeetCode Alien Dictionary
原题链接在这里:https://leetcode.com/problems/alien-dictionary/ 题目: There is a new alien language which uses ...
- 12月07日《奥威Power-BI智能分析报告制作方法 》腾讯课堂开课啦
前几天跟我一个做报表的哥们聊天,听着他一茬一茬地诉苦:“每天做报表做到想吐,老板看报表时还是不给一个好脸色.”我也只能搬出那一套“过程大于结果”的内心疗程赠与他,没想到他反而怒了:“做 ...
- Windows Server 2008 R2 辅域控制器如何升级成主域控制器
一.实验模拟故障问题: zhuyu公司架设了一台主域控制器和一台辅域控制器,某一天,zhuyu公司的主域控制器系统崩溃,主域控制器系统也进不去. 虽然辅域控制器可以暂时代替主域控制器的普通工作,但是特 ...
- 如何用openvr api打开vive前置摄像头
随着越来越多的开发者开始他们的VR开发工作,他们看到了这项技术的巨大潜力,像是Valve这样的公司正在想办法保证他们的软件开发包(SDK)能够提供尽量多的功能.今天这家公司发布了其针对SteamVR的 ...
- composer--------------今天遇到几个奇葩问题,记录一下
1.就是composer跟xdebug有冲突,每次用composer命令的时候都要报xdebug的错误,其实这个只要你去php的配置文件里面将xdebug注释掉就可以了,但是我注释掉了以后还是不行.找 ...
- ThroughRain第一次冲刺总结
团队名:ThroughRain 项目确定:<餐厅到店点餐系统> 项目背景:本次项目是专门为餐厅开发的一套订餐系统.大家有没有发现在节假日去餐厅吃饭会超级麻烦,人很多, 热门的餐厅基本没有座 ...
- IOS基础面试题
最近离职了,找工作,光会做项目,对基础不熟,今天就总结了一点面试题. 废话不多说,上题吧: 1.objective-c中的数字对象都有哪些,简述它们与基本数据类型的区别是什么. 基本类型和C一样,主要 ...
- Android--再探MVP模式
1,上一篇我们已经了解了大致的MVP模式,下面再通过这个登录功能的例子 ,我们能过更加容易的掌握MVP模式,再来补充一些闲外话:MVP 是 MVC 的变种,其实是一种升级.要说 MVP 就要说说 MV ...
- 使用Redis分布式队列
1.这是处理异常的类 public class MyExceptionAttribute:HandleErrorAttribute { //public static Queue<Excepti ...