我有一个使用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);
}
你得到的是因为你的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;
}