android - 如何获取Json格式的Retrofit回调get response body

标签 android retrofit retrofit2

我正在使用 Retrofit 来集成 Web 服务,当我的应用程序 Controller 运行到 Retrofit 成功 block 时,我如何才能在 Json 字符串格式中打印 ResponseBody

有人能帮帮我吗

主要 Activity :-

  import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

        @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                Retrofit retrofit = new Retrofit.Builder().baseUrl(url).
                        addConverterFactory(GsonConverterFactory.create()).build();

                RetrofitGetAPI service = retrofit.create(RetrofitGetAPI.class);

                retrofit.Call<List<CardTypes>> call = service.getProfileData();

                call.enqueue(new Callback<List<CardTypes>>() {
                    @Override
                    public void onResponse(Response<List<CardTypes>> response, Retrofit retrofit) {
                        System.out.println("Response is=====>" + response.body());
                    }

                    @Override
                    public void onFailure(Throwable t) {
                        System.out.println("Failure response is====>");
                    }
                });
            }

RetrofitGetAPI:- --------------

  public interface RetrofitGetAPI {

    @GET("api/RetrofitProfileResponse")
    Call<List<CardTypes>> getProfileData();
}

卡片类型:-

public class CardTypes {

    private int paymenttypeid;
    private String cardType;

    public String getCardType() {
        return cardType;
    }

    public void setCardType(String cardType) {
        this.cardType = cardType;
    }

    public int getPaymenttypeid() {
        return paymenttypeid;
    }

    public void setPaymenttypeid(int paymenttypeid) {
        this.paymenttypeid = paymenttypeid;
    }

}

服务器响应:-

   [
  {
    "paymenttypeid": 1,
    "cardType": "Master Card"
  },
  {
    "paymenttypeid": 2,
    "cardType": "VISA"
  }
]

最佳答案

尝试启用日志记录模式,以便您能够看到响应, 这是它是如何完成的,

应用程序等级

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'    
compile 'com.squareup.okhttp3:logging-interceptor:3.3.1'

像这样构建改造客户端,

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

            HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
            // set your desired log level
            logging.setLevel(HttpLoggingInterceptor.Level.BODY);

            final OkHttpClient okHttpClient = new OkHttpClient.Builder()
                        .readTimeout(30, TimeUnit.SECONDS)
                        .connectTimeout(30, TimeUnit.SECONDS)
                        .addInterceptor(logging)
                        .build();

            final Retrofit retrofit = new Retrofit.Builder()
                        .baseUrl(url)
                        .addConverterFactory(GsonConverterFactory.create())
                        .client(okHttpClient)
                        .build();

关于android - 如何获取Json格式的Retrofit回调get response body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40815081/

相关文章:

java - Android Retrofit 2 gzip 错误

java - 如何使用 RXJava Observables 处理用于填充模型的多个请求?

java - 运行 Android 应用程序会产生 java.lang.NoClassDefFoundError : retrofit. RestAdapter$Builder

java - 如何在执行 OkHttp 同步请求时获取 HTTP 响应错误代码

android - 同一TextView中字符串的不同字体大小

android - 以编程方式为 linearLayout 设置文本颜色

android - Android 启动画面的人行横道

android - PhoneGap InAppBrowser 事件监听器太慢 (Android)

java - 改造 2 和 Spring RestController

android - Retrofit 2 需要 HTTP 方法注解(如@GET、@POST 等)