Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Retrofit 請求字符串(非JSON數據)

Android Retrofit 請求字符串(非JSON數據)

編輯:關於Android編程

在使用Retrofit來作為網絡請求庫之後,筆者查閱了網上的有關教程,無外乎都是請求json數據,使用addConverterFactory(GsonConverterFactory.create())來作為轉化器,如果業務需求是請求 字符串,而不是json數據格式呢,繼續使用這個轉換器就會產生錯誤。

好,來到正題,如何使用Retrofit請求一段字符串:
來到官方文檔查閱:http://square.github.io/retrofit/

有如下描述:

這裡寫圖片描述

其實官方已經提供了一個字符串的轉換器,那麼接下來把它導入項目使用就可以了。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoMiBpZD0="添加gradle依賴">添加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 getResult(
            @Path("controller") String controller,
            @Path("method") String method,
            @Query("api_token") String api_token);

    @GET("{controller}/{method}")
    Call 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 call = mMallRequest.getAdvertResult("site", "adv-slide", LepaApiToken.getToken("site", "adv-slide"));

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

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

            }
        });

結果:
這裡寫圖片描述

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved