retrofit2.0转换String 报错修复

原创 2015年11月19日 14:36:22

添加Gson转换支持

new Retrofit.Builder()
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                    .baseUrl(AppVars.RequestPath.BASE_URL)
                    .client(App.getOkHttpClient())
                    .build();

然后这样设置后 Call< String>会出现gson类型转换异常

需要添加字符串转换


import com.squareup.okhttp.ResponseBody;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.lang.annotation.Annotation;

import retrofit.Converter;

/**
 * retrofit转换成字符串支持
 * Created by Administrator on 2015/11/19.
 */
public final class StringConverterFactory extends Converter.Factory {
    public static StringConverterFactory create() {
        return new StringConverterFactory();
    }

    @Override
    public Converter<ResponseBody, ?> fromResponseBody(Type type, Annotation[] annotations) {
        return new ConfigurationServiceConverter();
    }

    final class ConfigurationServiceConverter implements Converter<ResponseBody, String> {

        @Override
        public String convert(ResponseBody value) throws IOException {
            BufferedReader r = new BufferedReader(new InputStreamReader(value.byteStream()));
            StringBuilder total = new StringBuilder();
            String line;
            while ((line = r.readLine()) != null) {
                total.append(line);
            }
            return total.toString();
        }
    }
}

最后添加

 retrofit = new Retrofit.Builder().addConverterFactory(StringConverterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                    .baseUrl(AppVars.RequestPath.BASE_URL)
                    .client(App.getOkHttpClient())
                    .build();
版权声明:本文为sunger原创文章,未经博主允许不得转载。 我的微博http://weibo.com/sungerk

相关文章推荐

Retrofit自定义Converter之StringConverterFactory

之前写过一篇 浅谈Retrofit封装-让框架更加简洁易用 里面采用的是GsonConverterFactory对于retrofit的返回类型是只能有 具体对象、jsonObject、jsonArra...

Android 初识Retrofit

什么是 Retrofit ?Retrofit是Square开发的一个Android和Java的REST客户端库。这个库非常简单并且具有很多特性,相比其他的网络库,更容易让初学者快速掌握。它可以处理GE...
  • jdsjlzx
  • jdsjlzx
  • 2016年07月24日 18:14
  • 20077

Retrofit 最简单的快速入门及自己封装

简单介绍及官方文档的坑 官方文档 http://square.github.io/retrofit/ Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底...

Retrofit请求字符串

在使用Retrofit来作为网络请求库之后,笔者查阅了网上的有关教程,无外乎都是请求json数据,使用addConverterFactory(GsonConverterFactory.create()...

Retrofit 接收字符串

在Retrofit1.9中,GsonConverter是默认包含在包里面的并且会在RestAdapter创建的时候自动创建。结果就是,如果返回的是Json字符串将会自动地被转换为数据存取对象Data ...

Retrofit2.0使用总结及注意事项

概述Retrofit是由Square公司出品的针对于Android和Java的类型安全的Http客户端,网络服务基于OkHttp 。 变化如果之前使用过Retrofit1,会有一些变化, 比如创建方...
  • wbwjx
  • wbwjx
  • 2016年05月12日 00:13
  • 17275

Retrofit 2.0 自定义Converter

requestBodyConverter 不执行的解决办法: **参数要使用@Body这种形式,否则 request 方法会不起作用。** 在Retrofit中,无论是发送数据和接收数据,都是通过OK...
  • jdsjlzx
  • jdsjlzx
  • 2016年07月08日 14:27
  • 21641

retrofit2.0返回string

需要自定义一个converti public class StringConverterFactory extends Converter.Factory { public static S...
  • shb2058
  • shb2058
  • 2017年05月24日 11:42
  • 409

Retrofit2.0的Converter使用

在Retrofit中, 不管是发送数据或是接收数据, 最基本都是通过OKHttp的RequestBody和ResponseBody来实现,但是通常为了方便,我们在定制协议的时候,不会直接使用原始的Re...

Retrofit2.0 converterfactory

首先贴出dependencies :dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:retrofit2.0转换String 报错修复
举报原因:
原因补充:

(最多只允许输入30个字)