Android Retrofit 请求字符串(非JSON数据)

在使用Retrofit来作为网络请求库之后,笔者查阅了网上的有关教程,无外乎都是请求json数据,使用addConverterFactory(GsonConverterFactory.create())来作为转化器,如果业务需求是请求 字符串,而不是json数据格式呢,继续使用这个转换器就会产生错误。

好,来到正题,如何使用Retrofit请求一段字符串:
来到官方文档查阅:http://square.github.io/retrofit/

有如下描述:

这里写图片描述

其实官方已经提供了一个字符串的转换器,那么接下来把它导入项目使用就可以了。

添加gradle依赖

compile 'com.squareup.retrofit2:converter-scalars:2.0.0'

使用ScalarsConverterFactory转化器

public class RetrofitManager {

    private Retrofit mRetrofit;

    private volatile static RetrofitManager instance;

    private RetrofitManager() {
        mRetrofit = new Retrofit.Builder()
                .baseUrl(HttpAddress.SITE)
                .addConverterFactory(ScalarsConverterFactory.create())
                .build();
    }

    public static RetrofitManager getInstance() {
        if (instance == null) {
            synchronized (RetrofitManager.class) {
                if (instance == null) {
                    instance = new RetrofitManager();
                }
            }
        }
        return instance;
    }

    public Retrofit getRetrofit() {
        if (mRetrofit == null) {
            mRetrofit = RetrofitManager.getInstance().initRetrofit();
        }
        return mRetrofit;
    }

    private Retrofit initRetrofit() {
        return mRetrofit;
    }
}

创建请求接口

public interface MallRequest {

    @Headers({
            "User-Agent: Android"
    })
    @GET("{controller}/{method}")
    Call<String> getResult(
            @Path("controller") String controller,
            @Path("method") String method,
            @Query("api_token") String api_token);

    @GET("{controller}/{method}")
    Call<String> getAdvertResult(
            @Path("controller") String controller,
            @Path("method") String method,
            @Query("api_token") String api_token
    );
}

请求数据

private MallRequest mMallRequest;

 mMallRequest = RetrofitManager.getInstance().getRetrofit().create(MallRequest.class);
         Call<String> call = mMallRequest.getAdvertResult("site", "adv-slide", LepaApiToken.getToken("site", "adv-slide"));

        call.enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, retrofit2.Response<String> response) {
                Log.d("debug", response.body());
            }

            @Override
            public void onFailure(Call<String> call, Throwable t) {

            }
        });

结果:
这里写图片描述

大功告成!

感谢覃大畅的分享,原文链接:
http://blog.csdn.net/u013003052/article/details/50992436

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值