Java 在android中使用字符串正文发送POST请求

Java 在android中使用字符串正文发送POST请求,java,android,post,android-volley,Java,Android,Post,Android Volley,好吧,我在网站上到处寻找一个可能的解决方案,用android发送POST请求,但我似乎不理解这里截取的用法,或者启动异步线程来发出请求的方法 private RequestQueue signupRequestQ = Volley.newRequestQueue(this); @Override public void onClick(View view) { String postUrl = "https://mypost.url"; signupRequestQ.start

好吧,我在网站上到处寻找一个可能的解决方案,用android发送POST请求,但我似乎不理解这里截取的用法,或者启动异步线程来发出请求的方法

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:尝试在空对象引用上调用虚拟方法“java.io.File android.content.Context.getCacheDir”

但是,我不应该遇到NullPointerException,因为Volley RequestQueue javadoc明确指出,我只需要为newRequestQueue方法提供上下文,我做到了这一点


有人能帮我解决这个问题吗?谢谢大家!

这是因为您在活动顶部使用空上下文实例化了RequestQueue:

private RequestQueue signupRequestQ = Volley.newRequestQueue(this); // "this" is null here
尝试在活动的onCreate方法中创建RequestQueue,如:

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

崩溃不是由您的代码生成的。您正在从其他地方的空上下文调用getCacheDir方法。如果需要帮助,请在调用getCacheDir的地方发布代码。我在代码中根本没有调用getCacheDir。Android Studio上的工具提示告诉我,请求队列的构造函数只接受了一个contextName。调用Volley.newRequestQueuethis?@Bubu时,请求队列的构造函数可能与您处于活动的顶部完全相同。我在类的顶部做了这件事