Java 在改型调用中访问接口方法时出现Nullpointerexception

Java 在改型调用中访问接口方法时出现Nullpointerexception,java,android,retrofit,Java,Android,Retrofit,inversion调用中访问接口方法时出现的Nullpointerexception Userservice.class public interface UserService { @POST("login") Call<ResUser> login(@Body login login); } public class RetrofitClient { private static Retrofit retrofit=null; public

inversion
调用中访问接口方法时出现的
Nullpointerexception

Userservice.class

public interface UserService {

    @POST("login")
    Call<ResUser> login(@Body login login);
}
public class RetrofitClient {

    private static Retrofit retrofit=null;

    public static Retrofit getClient(String url){

        if(retrofit==null){
            retrofit=new Retrofit.Builder()
                    .baseUrl(url)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }

        return retrofit;
    }
}
    private void doLogin(String username,String password){
    Call<ResUser> call=userService.login(new login(username,password));
    call.enqueue(new Callback<ResUser>() {
        @Override
        public void onResponse(Call<ResUser> call, Response<ResUser> response) {
            if(response.isSuccessful()){
             Log.e("succes");
            }
        }

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

        }
    });

}
login.class

public interface UserService {

    @POST("login")
    Call<ResUser> login(@Body login login);
}
public class RetrofitClient {

    private static Retrofit retrofit=null;

    public static Retrofit getClient(String url){

        if(retrofit==null){
            retrofit=new Retrofit.Builder()
                    .baseUrl(url)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }

        return retrofit;
    }
}
    private void doLogin(String username,String password){
    Call<ResUser> call=userService.login(new login(username,password));
    call.enqueue(new Callback<ResUser>() {
        @Override
        public void onResponse(Call<ResUser> call, Response<ResUser> response) {
            if(response.isSuccessful()){
             Log.e("succes");
            }
        }

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

        }
    });

}
我在这行中有
nullpointerexception

  Call<ResUser> call=userService.login(new login(username,password));
Call Call=userService.login(新登录名(用户名、密码));

我认为您的问题在于
登录
方法,您应该在呼叫前检查
null
用户名和密码:

Call Call=userService.login(新登录名(用户名、密码))


如果对您有帮助,请接受我的回答。

添加此
UserService UserService=ApiUtils.getUserService()调用登录服务之前的代码行
call call=userService.login(新登录(用户名、密码))

UserService UserService=ApiUtils.getUserService();
Call Call=userService.login(新登录名(用户名、密码));

您应该有一个名为UserService的UserService接口实例来调用login()方法。

问题是您在这里传递用户名和密码,所以不要使用构造函数,而是尝试使用getter setters

在调用userService类之前,还要创建该类的对象,因为它未在代码中实例化

UserService userservice = ApiUtils.getUserService(); 
然后尝试以下方法:

Call<ResUser> call=userService.login(new login(username,password));
Call Call=userService.login(新登录名(用户名、密码));
您需要传递您在此处定义的类Login对象,它将获得一个Login对象:

@POST("login")
Call<ResUser> login(@Body login login);
@POST(“登录”)
调用登录(@Body-login-login);
现在的解决方案是,如果服务器需要登录类的对象,则:

在此之前:

Call<ResUser> call=userService.login(new login(username,password));
Call Call=userService.login(新登录名(用户名、密码));
创建login类的对象,并为该对象设置用户名和密码,然后将该对象作为:

Login login = new Login();
login.setuserName(username);
login.setpassword(password);
UserService userservice = ApiUtils.getUserService(); 
Call<ResUser> call=userService.login(login);
Login Login=new Login();
login.setuserName(用户名);
login.setpassword(密码);
UserService UserService=ApiUtils.getUserService();
Call Call=userService.login(login);
现在,如果您的服务器要求在正文中分别包含用户名和密码,而不包含登录对象,则您需要更改:

@POST("login")
Call<ResUser> login(@Body login login);
@POST(“登录”)
调用登录(@Body-login-login);
致:

@POST(“登录”)
调用登录名(@Path(“用户名”)字符串用户名,@Path(“密码”)字符串密码);

但是,由于您在此处的web服务路径@POST(“login”)显示您不需要用户名和密码,所以第一个解决方案就是您的解决方案。创建一个类login对象,并在调用时传递它,正如我上面所述。

不,这并不能解决我的问题,仍然在同一行上获取空指针确定我看到了您的错误。在下面添加一行:UserService UserService=ApiUtils.getUserService();Call Call=userService.login(新登录名(用户名、密码))。。。。。请添加logcat..解决了我的问题谢谢