Регистрация Android Volley

Я хочу использовать Volley для формы регистрации в Android.

Когда я нажал кнопку регистрации, произошла ошибка NetworkDispatcher.

Вот мой вывод 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

У меня есть регистрационная активность, содержащая 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);

    }
}

Я использовал эту карту <> для публикации своих учетных данных, но ничего не происходит.

Я даже использовал журнал, чтобы показать ошибку, и ничего не появилось.

Как я могу это решить?

0
0
246
1

Ответы 1

Из трассировки стека мы видим, что ошибка является нулевым параметром запроса: at com.android.volley.Request.encodeParameters(Request.java:476)

Убедитесь, что все ваши параметры не равны нулю (т.е. с помощью оператора журнала), прежде чем разрешить отправку запроса, в противном случае предложите пользователю заполнить отсутствующий параметр.

Другие вопросы по теме