[英]Android Volley Registration
I want to use Volley for a registration form in Android. 我想在Android上使用Volley作为注册表格。
When I hit the register button, a NetworkDispatcher Error occurred. 当我按下注册按钮时,发生了NetworkDispatcher错误。
Here's my Logcat output: 这是我的Logcat输出:
Logcat: logcat的:
[92489] NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
at java.net.URLEncoder.encode(URLEncoder.java:204)
at com.android.volley.Request.encodeParameters(Request.java:476)
at com.android.volley.Request.getBody(Request.java:462)
at com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:253)
at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:227)
at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:107)
at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:97)
at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:114)
09-13 18:50:19.525 7298-7298/com.mustafataj.zoalvision.checkmyride D/ErrorResponse: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
09-13 18:50:49.479 7298-7298/com.mustafataj.zoalvision.checkmyride V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@6934d63 nm : com.mustafataj.zoalvision.checkmyride ic=com.android.internal.widget.EditableInputConnection@bde4d60
09-13 18:50:49.480 7298-7298/com.mustafataj.zoalvision.checkmyride I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
09-13 18:50:49.901 7298-8322/com.mustafataj.zoalvision.checkmyride V/FA: Recording user engagement, ms: 54008
I have the registration activity that contains the POST and the request, and here's my RegistrationActivity.class: 我有包含POST和请求的注册活动,这是我的RegistrationActivity.class:
package com.mustafataj.zoalvision.checkmyride;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.android.volley.DefaultRetryPolicy;
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 com.mikhaellopez.lazydatepicker.LazyDatePicker;
import com.mustafataj.zoalvision.checkmyride.Remote.SendData;
import com.mustafataj.zoalvision.checkmyride.WebServices.ApiUtils;
import com.mustafataj.zoalvision.checkmyride.WebServices.RegisterService;
import com.mustafataj.zoalvision.checkmyride.WebServices.RetrofitClient;
import com.mustafataj.zoalvision.checkmyride.WebServices.SharedPrefManager;
import com.mustafataj.zoalvision.checkmyride.WebServices.URLs;
import com.mustafataj.zoalvision.checkmyride.WebServices.User;
import com.mustafataj.zoalvision.checkmyride.connection.RestAdapter;
import org.json.JSONException;
import org.json.JSONObject;
import java.awt.font.TextAttribute;
import java.util.HashMap;
import java.util.Map;
import studio.carbonylgroup.textfieldboxes.ExtendedEditText;
public class RegisterFormtwoActivity extends AppCompatActivity {
private Button register;
ExtendedEditText email, password, re_password, phone_key, phone;
String first,last,country_post,city_post,birthdate_post,gender_post;
String RegisterApi = ApiUtils.REGISTER_URL;
ApiUtils apiUtils;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_formtwo);
register = findViewById(R.id.register_btn);
email = findViewById(R.id.register_email);
password = findViewById(R.id.register_password);
re_password = findViewById(R.id.register_password_confirm);
phone_key = findViewById(R.id.register_key);
phone = findViewById(R.id.register_phone);
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String Email, Password, C_Password, P_Key, Phone;
Email = email.getText().toString();
Password = password.getText().toString();
C_Password = re_password.getText().toString();
P_Key = phone_key.getText().toString();
Phone = phone.getText().toString();
Intent i = new Intent(RegisterFormtwoActivity.this, activityMain.class);
first = i.getStringExtra("first_name");
last = i.getStringExtra("last_name");
country_post = i.getStringExtra("country");
city_post = i.getStringExtra("city");
gender_post = i.getStringExtra("gender");
birthdate_post = i.getStringExtra("birthdate");
String street = i.getStringExtra("street");
if (TextUtils.isEmpty(Email)) {
email.setError("Mandatory");
email.requestFocus();
return;
}
if (!Patterns.EMAIL_ADDRESS.matcher(Email).matches()) {
email.setError("Make sure you entered a valid Email");
return;
}
if (TextUtils.isEmpty(Password)) {
email.setError("Check Your Password");
email.requestFocus();
return;
}
if (TextUtils.isEmpty(Phone)) {
email.setError("Check Your Phone Number");
email.requestFocus();
return;
}
signUp();
// SendData send_data = new SendData(first_name, last_name, city, birth, gender, Email, Password, C_Password, Phone, street, responseListenert, RegisterApi);
// RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
//queue.add(send_data);
// Toast.makeText(getApplicationContext(), "Account Created!.. check your inbox now", Toast.LENGTH_SHORT).show();
}
});
}
private void signUp() {
RequestQueue queue = Volley.newRequestQueue(RegisterFormtwoActivity.this);
String response = null;
final String finalRespone = response;
StringRequest postResquest = new StringRequest(Request.Method.POST, URLs.URL_REGISTER, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject object = new JSONObject(response);
if (object.getBoolean("success")==true){
Toast.makeText(getApplicationContext(),"Done",Toast.LENGTH_LONG).show();
startActivity(new Intent(getApplicationContext(),activityMain.class));
} else {
Log.i("ERROR",response.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("ErrorResponse",error.getMessage());
}
}
)
{
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String,String>();
params.put("country",country_post);
params.put("first_name",first);
params.put("last_name",last);
params.put("password",password.toString());
params.put("confirm_password",re_password.toString());
params.put("email",email.toString());
params.put("area_id",city_post);
params.put("birthdate",birthdate_post);
params.put("gender",gender_post);
params.put("phone",phone.toString());
return params;
}
};
postResquest.setRetryPolicy(new DefaultRetryPolicy(0,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(postResquest);
}
}
I used this Map<> to post my credentials, but nothing happens. 我使用此Map <>发布了凭据,但是什么也没有发生。
I even used log to show the error and nothing appeared. 我什至使用日志来显示错误,但没有任何显示。
How can I solve this? 我该如何解决?
From the stack trace we can see the error is a request parameter being null: at com.android.volley.Request.encodeParameters(Request.java:476)
从堆栈跟踪中,我们可以看到错误是请求参数为空: at com.android.volley.Request.encodeParameters(Request.java:476)
Verify that all your parameters are not null (ie with a log statement) before you allow the request to be sent, otherwise prompt the user to fill out the missing parameter. 在允许发送请求之前,请验证所有参数均不为空(即,带有日志语句),否则请提示用户填写缺少的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.