I am doing an android project the login API is working properly in postman but for JSON format it is showing Unexpected 'S'. My colleague told me to convert the Response in LoginRequest.java must be changed to either JSONArray or JSONObject
Here are PHP, Android JAVA codes
<?php
include("Connection.php");
if(isset($_POST["email"]) && isset($_POST["password"]))
{
$email=$_POST["email"];
$password=$_POST["password"];
$result = mysqli_query($conn, "select * from user_master where email='$email' && password='$password'");
if(mysqli_num_rows($result) > 0)
{
echo "Success";
exit;
}
else
{
echo "INVALID";
exit;
}
}
?>
LoginRequest.java
package com.talentakeaways.ttpms;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;
/**
* Created by chand on 15-03-2018.
*/
public class LoginRequest extends StringRequest {
private static final String url = "http://10.26.16.22:80/ttpms/login.php";
private Map<String, String> parameters;
LoginRequest(String username, String password, Response.Listener<String> listener, Response.ErrorListener errorListener) {
super(Method.POST, url, listener, errorListener);
parameters = new HashMap<>();
parameters.put("username", username);
parameters.put("password", password);
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return parameters;
}
}
Ttpm_Login.java
package com.talentakeaways.ttpms;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.android.volley.NetworkError;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.ServerError;
import com.android.volley.TimeoutError;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
import info.androidhive.androidsplashscreentimer.R;
public class Ttpm_Login extends AppCompatActivity {
//declaration of edit text, button and string values
EditText tenantname, passWord;
Button bt_login;
String userName, password;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ttpm_login);
setTitle("Login"); //set title of the activity
initialize();
final RequestQueue requestQueue = Volley.newRequestQueue(Ttpm_Login.this);
//onClickListener method for button
bt_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//assigning String variables to the text in edit texts
userName = tenantname.getText().toString();
password = passWord.getText().toString();
//Validating the String values
if (validateUsername(userName) && validatePassword(password)) {
//Start ProgressDialog
final ProgressDialog progressDialog = new ProgressDialog(Ttpm_Login.this);
progressDialog.setTitle("Please Wait");
progressDialog.setMessage("Logging You In");
progressDialog.setCancelable(false);
progressDialog.show();
//Login Request from class LoginRequest
LoginRequest loginRequest = new LoginRequest(userName, password, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("Login Response", response);
progressDialog.dismiss();
try {
JSONObject jsonObject = new JSONObject(response);
//If Success then start Dashboard Activity
if (jsonObject.getBoolean("Success")) {
Intent loginSuccess = new Intent(getApplicationContext(), Ttpm_Dashboard.class);
startActivity(loginSuccess);
finish();
}
//else Invalid
else {
if (jsonObject.getString("status").equals("INVALID"))
Toast.makeText(getApplicationContext(), "User Not Found", Toast.LENGTH_SHORT).show();
else {
Toast.makeText(getApplicationContext(), "Passwords Don't Match", Toast.LENGTH_SHORT).show();
}
}
} catch (JSONException e) {
e.printStackTrace();
Log.getStackTraceString(e);
Toast.makeText(Ttpm_Login.this, "Bad Response from the Server", Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.dismiss();
if (error instanceof ServerError) {
Toast.makeText(Ttpm_Login.this, "Server Error", Toast.LENGTH_SHORT).show();
} else if (error instanceof TimeoutError) {
Toast.makeText(Ttpm_Login.this, "Connection Timed Out", Toast.LENGTH_SHORT).show();
} else if (error instanceof NetworkError) {
Toast.makeText(Ttpm_Login.this, "Bad Network Connection", Toast.LENGTH_SHORT).show();
}
}
});
requestQueue.add(loginRequest);
}
}
});
}
private void initialize() {
tenantname = findViewById(R.id.tenantname);
passWord = findViewById(R.id.password);
bt_login = findViewById(R.id.login);
}
private boolean validateUsername(String string) {
//Validating the entered USERNAME
if (string.equals("")) {
tenantname.setError("Enter a Username");
return false;
} else if (string.length() > 50) {
tenantname.setError("Maximum 50 Characters");
return false;
} else if (string.length() < 6) {
tenantname.setError("Minimum 6 Characters");
return false;
}
tenantname.setEnabled(false);
return true;
}
private boolean validatePassword(String string) {
//Validating the entered PASSWORD
if (string.equals("")) {
passWord.setError("Enter Your Password");
return false;
} else if (string.length() > 32) {
passWord.setError("Maximum 32 Characters");
return false;
}
// else if (string.length() < 8) {
// passWord.setError("Minimum 8 Characters");
// return false;
// }
//
passWord.setEnabled(false);
return true;
}
}
And Here is my logcat when perform login https://i.stack.imgur.com/94CGd.png
Please Help. Thanks In advance