如何在 Json 格式中获取 Retrofit 回调获取响应体 [英] How to get Retrofit callback get response body in Json formate

查看:84
本文介绍了如何在 Json 格式中获取 Retrofit 回调获取响应体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Retrofit 来集成 Web 服务,并且在运行我的应用程序控制器时转到 Retrofit 成功块,但是我如何以 Json 字符串格式打印 ResponseBody

有人可以帮我吗

主要活动:-

 导入 android.os.Bundle;导入 android.support.v7.app.AppCompatActivity;导入 java.util.concurrent.TimeUnit;导入 okhttp3.OkHttpClient;导入 okhttp3.logging.HttpLoggingInterceptor;进口改造2.改造;进口改造2.converter.gson.GsonConverterFactory;@覆盖protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);改造改造 = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).build();RetrofitGetAPI service = retrofit.create(RetrofitGetAPI.class);改造.调用<列表<卡片类型>>调用 = service.getProfileData();call.enqueue(new Callback>() {@覆盖public void onResponse(Response> response, Retrofit retrofit) {System.out.println("响应是======>" + response.body());}@覆盖公共无效 onFailure(Throwable t) {System.out.println("失败响应是====>");}});}

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

 公共接口 RetrofitGetAPI {@GET("api/RetrofitProfileResponse")呼叫<列表<卡片类型>>获取配置文件数据();}

卡片类型:-

public class CardTypes {private int paymenttypeid;私人字符串卡类型;公共字符串 getCardType() {退货卡类型;}public void setCardType(String cardType) {this.cardType = cardType;}公共 int getPaymenttypeid() {返回paymenttypeid;}public void setPaymenttypeid(int paymenttypeid) {this.paymenttypeid = paymenttypeid;}}

服务器响应:-

<预><代码> [{付款类型":1,"cardType": "万事达卡"},{"paymenttypeid": 2,"cardType": "签证"}]

解决方案

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

app gradle

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

像这样构建改造客户端,

import okhttp3.OkHttpClient;导入 okhttp3.logging.HttpLoggingInterceptor;进口改造2.改造;进口改造2.converter.gson.GsonConverterFactory;HttpLoggingInterceptor 日志记录 = 新的 HttpLoggingInterceptor();//设置你想要的日志级别logging.setLevel(HttpLoggingInterceptor.Level.BODY);最终 OkHttpClient okHttpClient = new OkHttpClient.Builder().readTimeout(30, TimeUnit.SECONDS).connectTimeout(30, TimeUnit.SECONDS).addInterceptor(记录).建造();最终改造改造 = new Retrofit.Builder().baseUrl(网址).addConverterFactory(GsonConverterFactory.create()).client(okHttpClient).建造();

I'm using Retrofit for integrating web services and when run my app controller going to Retrofit success block but how can i print ResponseBody in Json string formate

can some one help me please

Main 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();
}

CardTypes:-

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;
    }

}

Server response:-

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

解决方案

Try to enable logging mode by that u will be able to see the response, Here it is how its done,

app gradle

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'

build retrofit client like this,

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();

这篇关于如何在 Json 格式中获取 Retrofit 回调获取响应体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆