我使用Retrofit来集成Web服务,当我运行我的app控制器进入Retrofit成功块时,但我如何在Json string formate中打印ResponseBody
请一位有人帮助我
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"
}
]
答案 0 :(得分:2)
尝试启用日志记录模式,您将能够看到响应, 这就是它的完成方式,
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'
构建这样的改造客户端,
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();
答案 1 :(得分:1)
您是否使用邮递员或其他API拦截器测试了您的API并检查了响应是什么?
如果您的api给出了正确答案,那么response.body()
会在这种情况下为您提供一个List
对象,即您 CardTypes列表。您需要将其转换为字符串,以便以适当的格式打印。您可以使用new Gson().toJson(object)
将对象转换为String
。