安卓系统无法连接到服务器进行注册或登录。

问题描述 投票:0回答:1

我有一个使用Laravel后台的安卓应用程序,我使用Volley来连接注册和登录。

虽然在Postman上可以正常工作,但是在应用程序中,当我尝试注册时,它给我这个错误。

E/Volley: [1266] BasicNetwork.performRequest: Unexpected response code 500 for https://star.magossa.com/api/register
W/System.err: com.android.volley.ServerError
    at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:205)
    at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:131)
    at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:111)
    at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:90)
D/EGL_emulation: eglMakeCurrent: 0xf59a04c0: ver 3 0 (tinfo 0xf5cde570)
D/EGL_emulation: eglMakeCurrent: 0xf59a04c0: ver 3 0 (tinfo 0xf5cde570)

有什么办法可以解决这个问题吗?

private void register(){
    dialog.setMessage("Loading");
    dialog.show();

    StringRequest request = new StringRequest(Request.Method.POST, Constant.REGISTER, response -> {
        //We get response if connection successful
        try {
            JSONObject object = new JSONObject(response);
            if (object.getBoolean("success")){
                JSONObject user = object.getJSONObject("user");
                //make sharedpreferences user
                SharedPreferences userPref = getActivity().
                        getApplicationContext().
                        getSharedPreferences("user", getContext().MODE_PRIVATE);

                SharedPreferences.Editor editor = userPref.edit();
                editor.putString("token", object.getString("token"));
                editor.putString("name", user.getString("name"));
                editor.putString("lastname", user.getString("lastname"));
                editor.putString("photo", user.getString("photo"));
                editor.apply();
                //if successful
                Toast.makeText(getContext(), "Register Successful", Toast.LENGTH_SHORT).show();
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        dialog.dismiss();
    },error -> {
        //error if connection not successful
        error.printStackTrace();
        dialog.dismiss();
    }){
        //add parameters

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            HashMap<String, String> map = new HashMap<>();

            map.put("email", txtEmail.getText().toString().trim());
            map.put("password", txtPassword.getText().toString());
            return map;
        }
    };

    //add this request to request queue
    RequestQueue queue = Volley.newRequestQueue(getContext());
    queue.add(request);
}
java php android laravel android-volley
1个回答
1
投票

你得到的是因为你的API需要名字, 电子邮件和密码, 但你只发送电子邮件和密码, 修改getParams并添加名字. 请看这个例子。

   @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            HashMap<String, String> map = new HashMap<>();
            map.put("email", txtEmail.getText().toString().trim());
            map.put("name", name_from_input);
            map.put("password", txtPassword.getText().toString());
            return map;
        }
© www.soinside.com 2019 - 2024. All rights reserved.