Retrofit 传递json 和 复杂参数类型List<T>
2016-09-27 15:27
309 查看
1 首先你要定义一个接口
2 创建一个service
3 需要添加一个string转换器
4 就可以传递jsonarray了,我下面的实例代码传递的是jsonarray
@POST Call<String> post(@Url String url, @Body String info);
2 创建一个service
public static RetrofitHttpService createRetrofitHttpService() { Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL + "/") .addConverterFactory(StringConverterFactory.create()) .build(); RetrofitHttpService Service = retrofit.create(RetrofitHttpService.class); return Service; }
3 需要添加一个string转换器
package org.droidplanner.lelefly.retrofit; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import okhttp3.MediaType; import okhttp3.RequestBody; import okhttp3.ResponseBody; import okio.Buffer; import retrofit2.Converter; import retrofit2.Retrofit; public class StringConverterFactory extends Converter.Factory { private static final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8"); public static StringConverterFactory create() { return new StringConverterFactory(); } private StringConverterFactory() { } @Override public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { return new Converter<ResponseBody, String>(){ @Override public String convert(ResponseBody value) throws IOException { return value.toString(); } }; } @Override public Converter<?, RequestBody> requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) { return new Converter<String, RequestBody>(){ @Override public RequestBody convert(String value) throws IOException { Buffer buffer = new Buffer(); Writer writer = new OutputStreamWriter(buffer.outputStream(), "utf-8"); writer.write(value); writer.close(); return RequestBody.create(MEDIA_TYPE, buffer.readByteString()); } }; } }
4 就可以传递jsonarray了,我下面的实例代码传递的是jsonarray
HttpUtil.post(Lconstant.base + Lconstant.ADD_UAV_MISSION,"[" + resultStr +"]", new ResultCallBack() { @Override public void onSuccess(String url, String model) { Log.i("===>>",model); showToast("上传服务器成功"); } @Override public void onFailure(int statusCode, String errorMsg) { showToast(errorMsg); } });
相关文章推荐
- JSX语法中的标签属性注意事项
- JS点击某个图标或按钮弹出文件选择框的实现代码
- ejs 模板中 json 对象在 js 中的解析
- Javascript中document.execCommand()的用法
- jsp中url传值中文乱码解决方法
- JS控制HTML元素的显示和隐藏的两种方法
- 多物体缓冲运动js代码大全
- 简单透彻理解JSONP原理及使用
- js代码实例
- javascript的六种迭代器
- 页面实现不定条数据倒计时
- BZOJ 2208 [Jsoi2010]连通数
- js仿支付宝多方框输入支付密码效果
- JavaScript单选框复选框
- ExtJS初级培训3--实例--表格
- jsp中的9大内置对象
- js跳转页面
- js闭包的用途
- 写了10年Javascript未必全了解的连续赋值运算
- JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别