响应错误:: java.lang.IllegalStateException:预期 BEGIN_OBJECT 但在第 1 行第 1 列路径 $ 处为 STRING
Response error :: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
我正在 android 中进行用户身份验证。我正在传递用户名和密码,但出现此错误。 API 工作正常任何帮助将不胜感激
谁能告诉我做错了
这是我遇到的错误 android
[![在此处输入图片描述][1]][1]
登录活动
public class Login extends AppCompatActivity {
private String email,password;
private EditText emailET;
private EditText passwordET;
private Button loginButton,createAccount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
emailET = findViewById(R.id.editTextUname);
passwordET = findViewById(R.id.editTextPassword);
loginButton = findViewById(R.id.loginButton);
createAccount = findViewById(R.id.createaccountButton);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
userAuth();
}
});
createAccount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Login.this,SignUp.class);
startActivity(i);
}
});
}
private void userAuth() {
VidlyEndPoint vidlyEndPoint = RetrofitInstance.getService().create(VidlyEndPoint.class);
email = emailET.getText().toString();
password = passwordET.getText().toString();
JsonObject requestBody = new JsonObject();
requestBody.addProperty("email",email );
requestBody.addProperty("password",password );
Log.e("Response", String.valueOf(requestBody));
// User user = new User(email, password);
Call<User> call = vidlyEndPoint.authUser(requestBody) ;
final Intent dash = new Intent(getApplicationContext(),dashboard.class);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (!response.isSuccessful()) {
Toast.makeText(getApplicationContext(),"Invalid Email or Password", Toast.LENGTH_SHORT).show();
Log.e("Response NS :", String.valueOf(response.code()));
}
else if(response.code() == 200){
Toast.makeText(getApplicationContext(), response.body().toString(), Toast.LENGTH_SHORT).show();
startActivity(dash);
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
Log.e("Response error :", t.getMessage());
}
});
}
}
预期输出:
JSON 代币
你得到这个异常是因为你想要一个 object
作为响应,但你得到的实际 response
是一个 string
.
您必须将 server response
更改为 JSON 或将 API
服务中的 response type
更改为字符串。
试试这个,字符串响应不是用户
Call<String> call = vidlyEndPoint.authUser(requestBody) ;
final Intent dash = new Intent(getApplicationContext(),dashboard.class);
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (!response.isSuccessful()) {
Toast.makeText(getApplicationContext(),"Invalid Email or Password", Toast.LENGTH_SHORT).show();
Log.e("Response NS :", String.valueOf(response.code()));
}
else if(response.code() == 200){
Toast.makeText(getApplicationContext(), response.body().toString(), Toast.LENGTH_SHORT).show();
startActivity(dash);
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.e("Response error :", t.getMessage());
}
});
}
将 Response<User>
替换为 Response<ResponseBody>
。
我正在 android 中进行用户身份验证。我正在传递用户名和密码,但出现此错误。 API 工作正常任何帮助将不胜感激 谁能告诉我做错了
这是我遇到的错误 android
[![在此处输入图片描述][1]][1]
登录活动
public class Login extends AppCompatActivity {
private String email,password;
private EditText emailET;
private EditText passwordET;
private Button loginButton,createAccount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
emailET = findViewById(R.id.editTextUname);
passwordET = findViewById(R.id.editTextPassword);
loginButton = findViewById(R.id.loginButton);
createAccount = findViewById(R.id.createaccountButton);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
userAuth();
}
});
createAccount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Login.this,SignUp.class);
startActivity(i);
}
});
}
private void userAuth() {
VidlyEndPoint vidlyEndPoint = RetrofitInstance.getService().create(VidlyEndPoint.class);
email = emailET.getText().toString();
password = passwordET.getText().toString();
JsonObject requestBody = new JsonObject();
requestBody.addProperty("email",email );
requestBody.addProperty("password",password );
Log.e("Response", String.valueOf(requestBody));
// User user = new User(email, password);
Call<User> call = vidlyEndPoint.authUser(requestBody) ;
final Intent dash = new Intent(getApplicationContext(),dashboard.class);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (!response.isSuccessful()) {
Toast.makeText(getApplicationContext(),"Invalid Email or Password", Toast.LENGTH_SHORT).show();
Log.e("Response NS :", String.valueOf(response.code()));
}
else if(response.code() == 200){
Toast.makeText(getApplicationContext(), response.body().toString(), Toast.LENGTH_SHORT).show();
startActivity(dash);
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
Log.e("Response error :", t.getMessage());
}
});
}
}
预期输出: JSON 代币
你得到这个异常是因为你想要一个 object
作为响应,但你得到的实际 response
是一个 string
.
您必须将 server response
更改为 JSON 或将 API
服务中的 response type
更改为字符串。
试试这个,字符串响应不是用户
Call<String> call = vidlyEndPoint.authUser(requestBody) ;
final Intent dash = new Intent(getApplicationContext(),dashboard.class);
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (!response.isSuccessful()) {
Toast.makeText(getApplicationContext(),"Invalid Email or Password", Toast.LENGTH_SHORT).show();
Log.e("Response NS :", String.valueOf(response.code()));
}
else if(response.code() == 200){
Toast.makeText(getApplicationContext(), response.body().toString(), Toast.LENGTH_SHORT).show();
startActivity(dash);
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.e("Response error :", t.getMessage());
}
});
}
将 Response<User>
替换为 Response<ResponseBody>
。