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 ...
随机推荐
- ps aux和ps -ef命令区别
ps aux 是用BSD的格式来显示 java这个进程 显示的项目有:USER,PID,%CPU,%MEM,VSZ,RSS,TTY,STAT,START,TIME,COMMAND ps -ef ...
- java读取记事本文件的部分数据添加到mysql
package com.tideway.readtxt; import java.io.BufferedReader; import java.io.FileInputStream; import j ...
- jq 解析josn字符串
1. var obj = jQuery.parseJSON("${ruleModel.rules}"); 2. var obj = eval("("+" ...
- Objective-C语言Foundation框架
Mac OS X开发会使用Cocoa框架,它是一种支持应用程序提供丰富用户体验的框架,它实际上由:Foundation和Application Kit(AppKit)框架组成.iOS开发,会使用Coc ...
- 管理Cookie的插件——jquery.cookie.js
下载地址:http://plugins.jquery.com/cookie/ jquery.cookie中的操作: 一.创建cookie: 1.创建一个会话cookie: $.cookie('cook ...
- 机器人操作系统(ROS)教程4:ROS的框架【转】
转自:http://www.arduino.cn/thread-11351-1-1.html 在进行ROS的代码开发前,有必要了解一些ROS的概念.首先,ROS的系统代码分为两部分:main和univ ...
- C#网络爬虫
CronMaker is a utility which helps you to build cron expressions. CronMaker uses Quartz open source ...
- App.xaml.cs
using System.Windows; namespace HelloWorld { /// <summary> /// Interaction logic for App.xaml ...
- CentOS 安装Zookeeper-3.4.6 单节点
Dubbo 建议使用 Zookeeper 作为服务的注册中心. 注册中心服务器(192.168.3.71)配置,安装 Zookeeper: 1. 修改操作系统的/etc/hosts 文件中添加: # ...
- latex 异或
用\lxor \(\lxor\) 用\veebar \(\veebar\) 用\oplus \(\oplus\) ... 怎么不是我想象的那样... 算了.