Отправить запрос POST в Android с телом строки - PullRequest
0 голосов
/ 26 июня 2018

Хорошо, я просмотрел весь сайт в поисках возможного решения для отправки POST-запроса с помощью Android, но я, похоже, не понимаю, как используется Volley здесь или метод, который запускал асинхронный поток для выполнения запроса .

private RequestQueue signupRequestQ = Volley.newRequestQueue(this);

@Override
public void onClick(View view) {
    String postUrl = "https://mypost.url";
    signupRequestQ.start();

    switch (view.getId()) {
        case R.id.signupBtn:
            if (((EditText) findViewById(R.id.passwordSignup)).getText().toString().length() < 6) {
                Dialog.showInvalidInputFieldsDialog(this,"Password must be longer than 5 characters").show();
            } else {
                try {

                    StringRequest strRequest = new StringRequest(Request.Method.POST, postUrl,
                            response -> {
                                System.out.println(response);
                            },
                            error -> {
                                System.out.println("What the funk");
                            }) {
                        @Override
                        protected Map<String, String> getParams() {
                            LinkedHashMap<String, String> postForm = new LinkedHashMap<String, String>();
                            postForm.put("test", "var");
                            return postForm;
                        }
                    };

                    signupRequestQ.add(strRequest);
                } catch (ParseException e) {
                    System.out.println("Something went wrong");
                }

            }

    }

По какой-то причине этот код вызывает сбой моего приложения с java.lang.RuntimeException и java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File android.content.Context.getCacheDir()' on a null object reference.

Однако мне не следует сталкиваться с исключением NullPointerException, поскольку Javadoc Volley RequestQueue четко заявил, что мне нужно только предоставить контекст для метода newRequestQueue, который я сделал.

Может ли кто-нибудь помочь с моей проблемой? Спасибо!

1 Ответ

0 голосов
/ 27 июня 2018

Это потому, что вы создаете экземпляр RequestQueue с нулевым контекстом в верхней части вашей активности:

private RequestQueue signupRequestQ = Volley.newRequestQueue(this); // "this" is null here

Попробуйте создать свой RequestQueue в методе onCreate() вашей Деятельности, например:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    signupRequestQ = Volley.newRequestQueue(this);
}
...