在带有param和header的android改型2中,响应为null
当我运行应用程序并填写电子邮件/密码时,它显示空响应在带有param和header的android改型2中,响应为null,android,json,api,retrofit2,response,Android,Json,Api,Retrofit2,Response,当我运行应用程序并填写电子邮件/密码时,它显示空响应(response.body()!=null&&response.issusccessful())当我登录时,onFailure()不显示任何内容,onResponse()显示空值。我怎样才能解决这个问题 缅因州 public final class MainApi { private static String BASE_URL = "http://www.eg.com/"; private static Retrofit
(response.body()!=null&&response.issusccessful())
当我登录时,onFailure()不显示任何内容,onResponse()显示空值。我怎样才能解决这个问题
缅因州
public final class MainApi {
private static String BASE_URL = "http://www.eg.com/";
private static Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(new OkHttpClient());
public MainApi() {
}
public static <S> S createService(Class<S> serviceClass) {
Retrofit retrofit = builder.build();
return retrofit.create(serviceClass);
}
}
公共最终类MainApi{
私有静态字符串BASE_URL=”http://www.eg.com/";
私有静态改装.Builder=新改装.Builder()
.baseUrl(基本URL)
.addConverterFactory(GsonConverterFactory.create())
.client(新的OkHttpClient());
公共MainApi(){
}
公共静态S createService(类serviceClass){
改装改装=builder.build();
返回改装。创建(serviceClass);
}
}
主服务接口
public interface MainService {
@Headers({"Content-Type: application/json", "Authorization: Bearer fafafafafafa"})
@FormUrlEncoded
@POST("auth")
Call<Auth> postAuth(@Field("email") String email,
@Field("password") String password;
}
公共接口主服务{
@标题({“内容类型:应用程序/json”,“授权:承载fafafa”})
@FormUrlEncoded
@发布(“授权”)
Call postAuth(@Field(“email”)字符串电子邮件,
@字段(“密码”)字符串密码;
}
活动
Call<Auth> call = MainApi.createService(MainService.class).postAuth(edt_email.getText().toString(), edt_password.getText().toString());
Call Call=MainApi.createService(MainService.class).postAuth(edt_email.getText().toString(),edt_password.getText().toString());
公共最终类MainApi{
私有静态字符串BASE_URL=”http://www.eg.com/";
私有静态MainService api;//添加了行
私人静态改装。建筑商;
公共静态MainService get(){
if(builder==null){
builder=新改装。builder()
.baseUrl(基本URL)
.addConverterFactory(GsonConverterFactory.create())
.client(getClient());
api=builder.build().create(MainService.class);//添加此行
}
返回api;
}
//添加此代码
私有静态OkHttpClient getClient(){
HttpLoggingInterceptor logging=新的HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
返回新的OkHttpClient.Builder()
.addInterceptor(日志记录)
.connectTimeout(120,时间单位为秒)
.readTimeout(120,时间单位为秒)
.writeTimeout(120,TimeUnit.SECONDS).build();
}
公共MainApi(){
}
公共静态S createService(类serviceClass){
改装改装=builder.build();
返回改装。创建(serviceClass);
}
}
您应该集成HttpLoggingInterceptor
来检测发生了什么事您的响应代码是什么?@ArbenMaloku当调用.enqueue
,@覆盖public void onResponse(调用,响应)
@PPL通常你必须获得一个响应代码。你可以使用这段代码获得此代码response.code()
当你获得它时,请在这里发布,这样我们也许可以帮助你。他正在使用它查看这一行-->MainApi.createService(MainService.class)
public final class MainApi {
private static String BASE_URL = "http://www.eg.com/";
private static MainService api;//added line
private static Retrofit.Builder builder;
public static MainService get(){
if(builder== null){
builder = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(getClient());
api = builder.build().create(MainService.class);//add this line
}
return api;
}
//Add this code
private static OkHttpClient getClient() {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
return new OkHttpClient.Builder()
.addInterceptor(logging)
.connectTimeout(120, TimeUnit.SECONDS)
.readTimeout(120, TimeUnit.SECONDS)
.writeTimeout(120, TimeUnit.SECONDS).build();
}
public MainApi() {
}
public static <S> S createService(Class<S> serviceClass) {
Retrofit retrofit = builder.build();
return retrofit.create(serviceClass);
}
}