Retrofit 传递json 和 复杂参数类型List<T>
2017-10-18 09:35
507 查看
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); } });
相关文章推荐
- Retrofit 传递json 和 复杂参数类型List<T>
- springmvc 复杂参数LIst<T> JSON参数绑定
- Struts2接受参数的几种类型和接受复杂类型参数(list<String>和list<Object>)
- js+json+webservice(List<>作为参数)
- fastJson如何序列化一个包含list对象的Map对象,如Map<String,List<T>>类型的对象
- json字符串转为list<T>类型
- .Net:反序列化处理Json字符串.转换成List<T>类型
- 我的Android进阶之旅------>android如何将List<NameValuePair>请求参数列表转换为json格式
- 接口测试入门(3)--使用httpClient进行登录用例操作/set-cookies验证/ List<NameValuePair>设置post参数/json解析
- android activity之间传递bean类型数据如(list<UVedioBean> )
- xfire webService返回Map<String,List<E>>嵌套复杂类型
- Android学习笔记3 使用Intent传递复杂的数据(对象,List<Object>等)
- java如何解析json字符串(List<Map<String,Object>成功的类型)
- startActivityforResult传递List<Object>参数错误问题
- android之Intent复杂数据的传递(ArrayList<String>类型的数据)
- 可以把List<String>传递给一个接受List<Object>参数的方法吗?
- Java - JDBC 结果集 ResultSet 转 List<Map> 类型,继而转 JSON 类型
- 通过递归将list<Map<String,Object>>类型的数据转换为tree组件可识别的json数据
- 利用out关键字向函数传递List<T>参数遇到的问题
- 类型 List 不是通用的;不能使用参数 <String> 将它参数化