/ / प्रतिक्रिया को JSON ARRAY या OBJECT में android वॉली, php, xampp mysql - java, php, android में बदलें

एंड्रॉइड वॉली, PHP, xampp mysql - जावा, php, android में JSON ARRAY या OBJECT में प्रतिक्रिया बदलें

मैं एक android परियोजना कर रहा हूँ लॉगिन एपीआई हैपोस्टमैन में ठीक से काम कर रहा है, लेकिन JSON प्रारूप के लिए यह अप्रत्याशित "S" दिखा रहा है। मेरे सहयोगी ने मुझे LoginRequest.java में प्रतिक्रिया बदलने के लिए कहा था या तो JSONArray या JSONAbject में बदल दिया जाना चाहिए

यहाँ PHP, Android JAVA कोड हैं

    <?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;
}

}

और यहाँ मेरा लॉगिन है जब लॉगिन करते हैं https://i.stack.imgur.com/94CGd.png

कृपया मदद कीजिए। अग्रिम में धन्यवाद

उत्तर:

जवाब के लिए 0 № 1

उदाहरण के लिए यदि आप JSON संरचना को देखते हैं, तो यह कुछ इस तरह होगा:

{

"परिणाम": [ { "user_login": "xyz", "user_login_password": 123456 }] }

सबसे पहले, JSON ऑब्जेक्ट को JSONArray ऑब्जेक्ट में इस तरह कन्वर्ट करें:

    JSONArray jsonarr_1 = (JSONArray) jobj.get(“results”);
for(int i=0;i<jsonarr_1.size();i++)
{
JSONObject jsonobj_1 = (JSONObject)jsonarr_1.get(i);
System.out.println(“Elements under results array”);
System.out.println(“nuser_login: ” +jsonobj_1.get(“user_login”));
System.out.println(“user_login_password: ” +jsonobj_1.get(“user_login_password”));
}

और पैरामीटर को सर्वर पर भेजें:

 protected Map<String, String> getParams() {

/** Pass the parameters to according to the API.*/
Map<String, String> params = new HashMap<String, String>();
params.put("user_login", edt_email.getText().toString().trim());
params.put("user_login_password", edt_password.getText().toString().trim());
return params;
}
};
/** Adding request to request queue*/
AppController.getInstance().addToRequestQueue(jsonObjReq, cancel_login_api);
}

जवाब के लिए 0 № 2

आपके पोस्ट पैरामीटर गलत हैं, आपके बैकएंड में आप कुंजी की अपेक्षा कर रहे हैं email लेकिन Android में आप पोस्ट कर रहे हैं username, ऐप में ईमेल करने के लिए उपयोगकर्ता नाम बदलें

LoginRequest(String username, String password, Response.Listener<String> listener, Response.ErrorListener errorListener) {
super(Method.POST, url, listener, errorListener);
parameters = new HashMap<>();
parameters.put("email", username);
parameters.put("password", password);
}

चूंकि आपकी प्रतिक्रिया एक स्ट्रिंग है, इसलिए इसे jsonobject में परिवर्तित करने की कोई आवश्यकता नहीं है। इस तरह से प्रतिक्रिया ब्लॉक बदलें

   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);