在改造 onResponse 方法时出现空点异常
Am getting null point exception at retrofit onResponse method
我的Json:
{
"status": "1",
"login": "sucess"
}
这是我的模型class:
public class LoginModel {
@SerializedName("status")
@Expose
private String status;
@SerializedName("login")
@Expose
private String login;
...}
这是我的界面:
public interface RestInterface {
String url = "http://192.168.10.2/tourist/v1";
@FormUrlEncoded
@POST("/login")
Call<LoginModel> Login(@Field("email") String email,
@Field("pass") String passs);
}
这是我的调用方式:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(RestInterface.url)
.addConverterFactory(GsonConverterFactory.create())
.build();
//Creating Rest Services
final RestInterface restInterface = retrofit.create(RestInterface.class);
//Calling method to get check login
Call<LoginModel> response = restInterface.Login(Email.getText().toString(), Password.getText().toString());
response.enqueue(new Callback<LoginModel>() {
@Override
public void onResponse(Response<LoginModel> response, Retrofit retrofit) {
finish();
startActivity(getIntent());
Email.setText("");
Password.setText("");
LoginModel lm = response.body();
if ( lm.getStatus().equals("1")) { //login Success
Toast.makeText(LoginActivity.this, "Login In SuccessFully", Toast.LENGTH_SHORT).show();
Intent i = new Intent(LoginActivity.this,AfterLoginActivity.class);
startActivity(i);
} else if (lm.getStatus().equals("0")) // login failure
{
Toast.makeText(LoginActivity.this, "Invalid UserName/Password ", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Throwable t) {
finish();
startActivity(getIntent());
// String merror = error.getMessage();
Toast.makeText(LoginActivity.this, "try again", Toast.LENGTH_LONG).show(); }
});
在 => lm.getstatus().equals(1) 行出现空点异常;
在使用 Retrofit 1.9 之前它工作正常,然后我将其更改为 Retrofit 2,现在我得到了空点异常!
https://inthecheesefactory.com/blog/retrofit-2.0/en 对 Retrofit 2.0 中新的 URL 声明模式进行了说明。它建议
- Base URL: always ends with /
- @Url: DO NOT start with /
在您的情况下,url 可能被解释为“http://192.168.10.2/login”。
尝试使用
String url = "http://192.168.10.2/tourist/v1/";
和
@POST("login")
我的Json:
{
"status": "1",
"login": "sucess"
}
这是我的模型class:
public class LoginModel {
@SerializedName("status")
@Expose
private String status;
@SerializedName("login")
@Expose
private String login;
...}
这是我的界面:
public interface RestInterface {
String url = "http://192.168.10.2/tourist/v1";
@FormUrlEncoded
@POST("/login")
Call<LoginModel> Login(@Field("email") String email,
@Field("pass") String passs);
}
这是我的调用方式:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(RestInterface.url)
.addConverterFactory(GsonConverterFactory.create())
.build();
//Creating Rest Services
final RestInterface restInterface = retrofit.create(RestInterface.class);
//Calling method to get check login
Call<LoginModel> response = restInterface.Login(Email.getText().toString(), Password.getText().toString());
response.enqueue(new Callback<LoginModel>() {
@Override
public void onResponse(Response<LoginModel> response, Retrofit retrofit) {
finish();
startActivity(getIntent());
Email.setText("");
Password.setText("");
LoginModel lm = response.body();
if ( lm.getStatus().equals("1")) { //login Success
Toast.makeText(LoginActivity.this, "Login In SuccessFully", Toast.LENGTH_SHORT).show();
Intent i = new Intent(LoginActivity.this,AfterLoginActivity.class);
startActivity(i);
} else if (lm.getStatus().equals("0")) // login failure
{
Toast.makeText(LoginActivity.this, "Invalid UserName/Password ", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Throwable t) {
finish();
startActivity(getIntent());
// String merror = error.getMessage();
Toast.makeText(LoginActivity.this, "try again", Toast.LENGTH_LONG).show(); }
});
在 => lm.getstatus().equals(1) 行出现空点异常; 在使用 Retrofit 1.9 之前它工作正常,然后我将其更改为 Retrofit 2,现在我得到了空点异常!
https://inthecheesefactory.com/blog/retrofit-2.0/en 对 Retrofit 2.0 中新的 URL 声明模式进行了说明。它建议
- Base URL: always ends with /
- @Url: DO NOT start with /
在您的情况下,url 可能被解释为“http://192.168.10.2/login”。 尝试使用
String url = "http://192.168.10.2/tourist/v1/";
和
@POST("login")