Retrofit学习"Content-Type: application/json;charset=UTF-8"@Body的使用
2016-12-05 09:46
716 查看
提前声明这个实践是在Retrofit2+rxjava下是用的,不是使用call,而是用的observable,原理一样希望能帮助到你
前几天学Retrofit,正好有人遇见从自己项目的老框架转换成Retrofit事,对于习惯使用post传递键值对的我来说,突然发还有一部分传参数是"Content-Type: application/json;charset=UTF-8"的接口,这是什么鬼,Retrofit怎么调用。,然后自己查看了网上文章发现这个@Body的注解,写一下@Body的使用。
body可以使用两种方式一种是这样直接传递java对象这个对象是能够被gson解析成json字符串的,另一种是传递RequestBody对象,其实不管是那种方式最后传出去的参数都是json格式的
第一种传对象
调用
第二种直接传字符串
RequestBody对象的创建
调用
调用可以看这篇封装之后的,会很方便
http://blog.csdn.net/qq_21174855/article/details/53259497
技术一般希望大家提出自己的意见.
前几天学Retrofit,正好有人遇见从自己项目的老框架转换成Retrofit事,对于习惯使用post传递键值对的我来说,突然发还有一部分传参数是"Content-Type: application/json;charset=UTF-8"的接口,这是什么鬼,Retrofit怎么调用。,然后自己查看了网上文章发现这个@Body的注解,写一下@Body的使用。
body可以使用两种方式一种是这样直接传递java对象这个对象是能够被gson解析成json字符串的,另一种是传递RequestBody对象,其实不管是那种方式最后传出去的参数都是json格式的
第一种传对象
/** * Created by 淼素 on 2016/11/11 0011. */ public interface Api {
// @FormUrlEncoded 我的项目还有键值对的接口,我没在乎直接用了,发现崩溃了,一直以为是自己写错了,结果屏蔽了这个就ok了。。
// @POST() // Observable<Main_bean> listRepos(@Url String url,@FieldMap Map<String, String> params);
@POST("login.jhtml")
@Headers({ "Content-Type: application/json;charset=UTF-8"})
Observable<bean> addUser(@Body Login_user body);
}
调用
Retrofit retrofit = new Retrofit.Builder() .baseUrl(MySettings.REQUESTURI) //主url .addConverterFactory(GsonConverterFactory.create())//gson解析 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//rxjava .build(); Api api =retrofit.create(Api.class); Observable<bean> observable= api.addUser(url,Login_userd对象 ); observable.subscribeOn(Schedulers.io()) //访问接口时的线程 .unsubscribeOn(AndroidSchedulers.mainThread()) //链接开始前和异常结束的线程选择 .observeOn(AndroidSchedulers.mainThread()) //获取到数据时的线程 .subscribe(new Subscriber(){ });
第二种直接传字符串
/** * Created by 淼素 on 2016/11/11 0011. */ public interface Api {
@POST("login.jhtml")
@Headers({ "Content-Type: application/json;charset=UTF-8"})
Observable<bean> addUser(@Body RequestBody body);
}
RequestBody对象的创建
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"),"你要传递的json字符串");
调用
Retrofit retrofit = new Retrofit.Builder() .baseUrl(MySettings.REQUESTURI) //主url .addConverterFactory(GsonConverterFactory.create())//gson解析 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//rxjava .build(); Api api =retrofit.create(Api.class); Observable<bean> observable= api.addUser(url,RequestBody 对象 ); observable.subscribeOn(Schedulers.io()) //访问接口时的线程 .unsubscribeOn(AndroidSchedulers.mainThread()) //链接开始前和异常结束的线程选择 .observeOn(AndroidSchedulers.mainThread()) //获取到数据时的线程 .subscribe(new Subscriber(){ });
调用可以看这篇封装之后的,会很方便
http://blog.csdn.net/qq_21174855/article/details/53259497
技术一般希望大家提出自己的意见.
相关文章推荐
- Retrofit学习"Content-Type: application/json;charset=UTF-8"@Body的使用
- (转)获取 request 中用POST方式"Content-type"是"application/x-www-form-urlencoded;charset=utf-8"发送的 json 数据
- 获取 request 中用POST方式"Content-type"是"application/x-www-form-urlencoded;charset=utf-8"发送的 json 数据
- 获取 request 中用POST方式"Content-type"是"application/x-www-form-urlencoded;charset=utf-8"发送的 json 数据
- 获取 request 中用POST方式"Content-type"是"application/x-www-form-urlencoded;charset=utf-8"发送的 json 数据
- Content type 'application/json;charset=UTF-8' not
- Content type expected:<application/json;charset=UTF-8> but was:<application/hal+json;charset=UTF-8>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">作用
- header("Content-Type:text/html;charset=utf-8");
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">意思?
- php显示乱码的处理header("Content-type:text/html;charset=utf-8");
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>意义
- 关于response.setContentType("text/html; charset=UTF-8");乱码问题
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>意义
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- 浅谈<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- HTML——<meta http-equiv="content-type" content="text/html; charset=UTF-8">
- header("Content-type:text/html;charset=utf-8")含义
- http post Content-type: application/json; charset=utf-8
- dhl:ajax无法跨域改用getJSON(解决服务器返回json数据中文为乱码的问题$.ajaxSetup({ scriptCharset: "utf-8" , contentType: "application/json; chars)