Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复org.json.JSONException:on-Volley?_Java_Android_Json_Httprequest_Android Volley - Fatal编程技术网

Java 如何修复org.json.JSONException:on-Volley?

Java 如何修复org.json.JSONException:on-Volley?,java,android,json,httprequest,android-volley,Java,Android,Json,Httprequest,Android Volley,我正在通过php(web)连接开发android登录 StringRequest stringRequest=new StringRequest(Request.Method.POST, URL_LOGIN, new Response.Listener<String>() { @Override public void onResponse(String r

我正在通过php(web)连接开发android登录

        StringRequest stringRequest=new StringRequest(Request.Method.POST, URL_LOGIN,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject=new JSONObject(response);
                            String success = jsonObject.getString("success");
                            JSONArray jsonArray=jsonObject.getJSONArray("login");


                            if (success.equals("1")) {
                               for (int i=0; i<jsonArray.length();i++){
                                   JSONObject object = jsonArray.getJSONObject(i);

                                   String name = object.getString("name").trim();
                                   String email=object.getString( "email").trim();
                                   Toast.makeText(LoginActivity.this,
                                           "Success Login. \nYour Name : "
                                                   +name+"\nYour Email : "
                                                   +email, Toast.LENGTH_SHORT)
                                           .show();
                                   loading.setVisibility(View.GONE);
                               }

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                            loading.setVisibility(View.GONE);
                            btn_login.setVisibility(View.VISIBLE);
                            Toast.makeText(LoginActivity.this, "Error!!! " +e.toString(),
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(LoginActivity.this, "Error!! " +error.toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);


    }
}
代码

package com.example.salmakhalil.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class LoginActivity extends AppCompatActivity {
    private EditText email,password;
    private Button btn_login;
    private TextView link_regist;
    private ProgressBar loading;
    private static String URL_LOGIN="http://192.168.8.101/android_register_login/login.php";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        loading=findViewById(R.id.loading);
        email=findViewById(R.id.email);
        password=findViewById(R.id.password);
        btn_login=findViewById(R.id.btn_login);
        link_regist=findViewById(R.id.link_regist);

        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String mEmail=email.getText().toString().trim();
                String mPass=password.getText().toString().trim();
                if (!mEmail.isEmpty() || !mPass.isEmpty()){
                    Login(mEmail,mPass);
                }
                else {
                    email.setError("Please insert email");
                    password.setError("Please insert Password");
                }
            }
        });

        link_regist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(LoginActivity.this, MainActivity.class));
            }
        });
    }

    private void Login(String email, String password){
        loading.setVisibility(View.VISIBLE);
        btn_login.setVisibility(View.GONE);
        StringRequest stringRequest=new StringRequest(Request.Method.POST, URL_LOGIN,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject=new JSONObject(response);
                            String success = jsonObject.getString("success");
                            JSONArray jsonArray=jsonObject.getJSONArray("login");


                            if (success.equals("1")) {
                               for (int i=0; i<jsonArray.length();i++){
                                   JSONObject object = jsonArray.getJSONObject(i);

                                   String name = object.getString("name").trim();
                                   String email=object.getString( "email").trim();
                                   Toast.makeText(LoginActivity.this,
                                           "Success Login. \nYour Name : "
                                                   +name+"\nYour Email : "
                                                   +email, Toast.LENGTH_SHORT)
                                           .show();
                                   loading.setVisibility(View.GONE);
                               }

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                            loading.setVisibility(View.GONE);
                            btn_login.setVisibility(View.VISIBLE);
                            Toast.makeText(LoginActivity.this, "Error!!! " +e.toString(),
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(LoginActivity.this, "Error!! " +error.toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);


    }
}
//我认为这里面临着一个问题

        StringRequest stringRequest=new StringRequest(Request.Method.POST, URL_LOGIN,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject=new JSONObject(response);
                            String success = jsonObject.getString("success");
                            JSONArray jsonArray=jsonObject.getJSONArray("login");


                            if (success.equals("1")) {
                               for (int i=0; i<jsonArray.length();i++){
                                   JSONObject object = jsonArray.getJSONObject(i);

                                   String name = object.getString("name").trim();
                                   String email=object.getString( "email").trim();
                                   Toast.makeText(LoginActivity.this,
                                           "Success Login. \nYour Name : "
                                                   +name+"\nYour Email : "
                                                   +email, Toast.LENGTH_SHORT)
                                           .show();
                                   loading.setVisibility(View.GONE);
                               }

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                            loading.setVisibility(View.GONE);
                            btn_login.setVisibility(View.VISIBLE);
                            Toast.makeText(LoginActivity.this, "Error!!! " +e.toString(),
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(LoginActivity.this, "Error!! " +error.toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);


    }
}
StringRequest StringRequest=新的StringRequest(Request.Method.POST,URL\u登录,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject JSONObject=新JSONObject(响应);
String success=jsonObject.getString(“success”);
JSONArray JSONArray=jsonObject.getJSONArray(“登录”);
如果(成功等于(“1”)){

对于(int i=0;i显然,
jsonObject
您在
onResponse()中的receive没有输入值“success”

        StringRequest stringRequest=new StringRequest(Request.Method.POST, URL_LOGIN,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject=new JSONObject(response);
                            String success = jsonObject.getString("success");
                            JSONArray jsonArray=jsonObject.getJSONArray("login");


                            if (success.equals("1")) {
                               for (int i=0; i<jsonArray.length();i++){
                                   JSONObject object = jsonArray.getJSONObject(i);

                                   String name = object.getString("name").trim();
                                   String email=object.getString( "email").trim();
                                   Toast.makeText(LoginActivity.this,
                                           "Success Login. \nYour Name : "
                                                   +name+"\nYour Email : "
                                                   +email, Toast.LENGTH_SHORT)
                                           .show();
                                   loading.setVisibility(View.GONE);
                               }

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                            loading.setVisibility(View.GONE);
                            btn_login.setVisibility(View.VISIBLE);
                            Toast.makeText(LoginActivity.this, "Error!!! " +e.toString(),
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(LoginActivity.this, "Error!! " +error.toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);


    }
}
您应该使用方法
jsonObject.optString(“成功”);
而不是
jsonObject.getString(“成功”);

        StringRequest stringRequest=new StringRequest(Request.Method.POST, URL_LOGIN,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject=new JSONObject(response);
                            String success = jsonObject.getString("success");
                            JSONArray jsonArray=jsonObject.getJSONArray("login");


                            if (success.equals("1")) {
                               for (int i=0; i<jsonArray.length();i++){
                                   JSONObject object = jsonArray.getJSONObject(i);

                                   String name = object.getString("name").trim();
                                   String email=object.getString( "email").trim();
                                   Toast.makeText(LoginActivity.this,
                                           "Success Login. \nYour Name : "
                                                   +name+"\nYour Email : "
                                                   +email, Toast.LENGTH_SHORT)
                                           .show();
                                   loading.setVisibility(View.GONE);
                               }

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                            loading.setVisibility(View.GONE);
                            btn_login.setVisibility(View.VISIBLE);
                            Toast.makeText(LoginActivity.this, "Error!!! " +e.toString(),
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(LoginActivity.this, "Error!! " +error.toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);


    }
}

optString(“success”)
如果键“success”不存在,则返回空字符串(“”)。
getString(“success”)
另一方面抛出一个JSONException。

jsonObject
您在
onResponse()
中的receive没有输入值“success”

        StringRequest stringRequest=new StringRequest(Request.Method.POST, URL_LOGIN,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject=new JSONObject(response);
                            String success = jsonObject.getString("success");
                            JSONArray jsonArray=jsonObject.getJSONArray("login");


                            if (success.equals("1")) {
                               for (int i=0; i<jsonArray.length();i++){
                                   JSONObject object = jsonArray.getJSONObject(i);

                                   String name = object.getString("name").trim();
                                   String email=object.getString( "email").trim();
                                   Toast.makeText(LoginActivity.this,
                                           "Success Login. \nYour Name : "
                                                   +name+"\nYour Email : "
                                                   +email, Toast.LENGTH_SHORT)
                                           .show();
                                   loading.setVisibility(View.GONE);
                               }

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                            loading.setVisibility(View.GONE);
                            btn_login.setVisibility(View.VISIBLE);
                            Toast.makeText(LoginActivity.this, "Error!!! " +e.toString(),
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(LoginActivity.this, "Error!! " +error.toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);


    }
}
您应该使用方法
jsonObject.optString(“成功”);
而不是
jsonObject.getString(“成功”);

        StringRequest stringRequest=new StringRequest(Request.Method.POST, URL_LOGIN,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject=new JSONObject(response);
                            String success = jsonObject.getString("success");
                            JSONArray jsonArray=jsonObject.getJSONArray("login");


                            if (success.equals("1")) {
                               for (int i=0; i<jsonArray.length();i++){
                                   JSONObject object = jsonArray.getJSONObject(i);

                                   String name = object.getString("name").trim();
                                   String email=object.getString( "email").trim();
                                   Toast.makeText(LoginActivity.this,
                                           "Success Login. \nYour Name : "
                                                   +name+"\nYour Email : "
                                                   +email, Toast.LENGTH_SHORT)
                                           .show();
                                   loading.setVisibility(View.GONE);
                               }

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                            loading.setVisibility(View.GONE);
                            btn_login.setVisibility(View.VISIBLE);
                            Toast.makeText(LoginActivity.this, "Error!!! " +e.toString(),
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(LoginActivity.this, "Error!! " +error.toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);


    }
}


optString(“success”)
返回空字符串(“”),如果键“success”不存在。
getString(“success”)
另一方面抛出一个JSONException。

你能分享应该得到的响应吗?我认为响应不包含任何字段名“success”.Query on postman以获得响应,否则请与后端开发人员联系。

您能否共享应该获得的响应。我认为响应中不包含任何字段名“success”。查询postman以获取响应,否则请与后端开发人员联系。

响应没有
成功
密钥,它是JSON请在postman中检查您的服务是否有
成功
密钥
响应
这是本地ip。您有公共ip吗?@JitenderDev是的,这是本地ip响应没有a
success
key in it's json在邮递员中检查您的服务是否有
success
key in
response
这是本地ip。您有公共ip吗?@JitenderDev是的,这是本地ip谢谢,出现了错误,但应用程序没有响应。只是加载!它可能没有做任何事情,因为您只更改为使用optString而不是getString。您的根本问题仍然存在,您的JSON对象没有名为success的键,更改为optString,如@matdev said,如果该键不存在,则返回空字符串,而不是引发JSON异常。使用Postman或失眠将请求发送到API并确认您的结构r JSON对象响应并检查
success
键是否确实存在于JSON的根目录中object@Boardy谢谢你的回复。我如何使用邮递员将请求发送给API我自己没有使用邮递员,我使用失眠症()。这对邮递员来说要简单得多,因为它的文档非常好。是的,你们都对,jsonObject没有获得条目“success”。因为,我在php端输入了错误,将“success”改为“success”。所以,刚刚更正了它,现在一切都已修复。非常感谢!谢谢,错误已显示,但应用程序没有响应。仅加载!它可能没有做任何事情,因为您只更改为使用optString而不是getString。您的根本问题仍然存在,您的JSON对象没有名为success的键,更改为o如果键不存在,ptString as@matdev said将返回一个空字符串,而不是抛出JSON异常。使用Postman或Dominash将请求发送到API,确认JSON对象响应的结构,并检查
success
键是否确实存在于JSON的根目录中object@Boardy谢谢你的回复。如何使用Postman将请求发送给API我自己没有使用Postman,我使用的是失眠()。对于Postman来说,这要简单得多,文档也很好。是的,你们都知道jsonObject没有获得条目“success”。因为,我在php端输入了错误,将“success”改为“success”.所以,刚刚更正了它,现在一切都已修复。非常感谢!是的,你们都对,jsonObject没有获得条目“success”。因为,我在php端输入了错误,将“success”改为“success”.所以,刚刚更正了它,现在一切都已修复。非常感谢!-非常感谢。还有一件事,我刚刚看了一些教程并粘贴了Json代码和凌空库代码。我不知道它的实际工作原理和完整的过程。你能给我发一些关于这方面的好教程供我学习吗。好的。我会尝试在这里看到我的答案。它是y帮助你是的,你们都是对的,jsonObject没有得到条目“success”。因为,我在php端输入了错误,将“success”改为“success”.所以,刚刚更正了它,现在一切都已修复。非常感谢!-非常感谢。还有一件事,我刚刚看了一些教程并粘贴了Json代码和凌空库代码。我不知道它的实际工作原理和完整的过程。你能给我发一些关于这方面的好教程供我学习吗。好的。我会尝试在这里看到我的答案。它是我能帮你吗
        StringRequest stringRequest=new StringRequest(Request.Method.POST, URL_LOGIN,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject=new JSONObject(response);
                            String success = jsonObject.getString("success");
                            JSONArray jsonArray=jsonObject.getJSONArray("login");


                            if (success.equals("1")) {
                               for (int i=0; i<jsonArray.length();i++){
                                   JSONObject object = jsonArray.getJSONObject(i);

                                   String name = object.getString("name").trim();
                                   String email=object.getString( "email").trim();
                                   Toast.makeText(LoginActivity.this,
                                           "Success Login. \nYour Name : "
                                                   +name+"\nYour Email : "
                                                   +email, Toast.LENGTH_SHORT)
                                           .show();
                                   loading.setVisibility(View.GONE);
                               }

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                            loading.setVisibility(View.GONE);
                            btn_login.setVisibility(View.VISIBLE);
                            Toast.makeText(LoginActivity.this, "Error!!! " +e.toString(),
                                    Toast.LENGTH_SHORT).show();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(LoginActivity.this, "Error!! " +error.toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                })
        {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);


    }
}