当前位置: 首页 > 知识库问答 >
问题:

在android studio中使用JSON正文的Google截击POST请求?

江正德
2023-03-14

这是我用来发出POST请求的一段代码。

RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);

            String url = "myUrl.....";
            StringRequest stringRequest = new StringRequest(Request.Method.POST, url, response -> {
                Toast.makeText(MainActivity.this, "Response: "+response, Toast.LENGTH_SHORT).show();
                try {
                    JSONObject mainObject = new JSONObject(response);
                    error = mainObject.getBoolean("error");
                    //Toast.makeText(getApplicationContext(), error, Toast.LENGTH_SHORT).show();
                } catch (JSONException e) {
                    e.printStackTrace();
                }

                if(!error){
                    SharedPreferences.Editor editor = sharedPreferences.edit();
                    editor.putString(userNameShared, email);
                    editor.putString(passwordShared, password);
                    editor.commit();
                    startActivity(new Intent(MainActivity.this, MainActivityDashboard.class));
                }
                else{
                    editTextEmail.setError("Invalid e-mail");
                    editTextPassword.setError("Invalid password");
                    return;
                }

            }, error -> Toast.makeText(MainActivity.this, "Error: "+error.getMessage(), Toast.LENGTH_SHORT).show()){
                @Override
                protected Map<String, String> getParams() throws AuthFailureError
                {
                    Map<String,String> params = new HashMap<String, String>();
                    params.put("email", email);
                    params.put("password", password);
                    params.put("rememberPassword", false);
                    params.put("ip_address", ipAddress);
                    params.put("isCaptchaEnabled", false);
                    return params;
                }

                @Override
                public Map<String,String> getHeaders() throws AuthFailureError {
                    Map<String,String> params = new HashMap<String, String>();
                    params.put("Context-Type","application/json");
                    return params;
                }
            };

            requestQueue.add(stringRequest);
        });

在以前的项目中,一切都很好地工作,但现在的问题是,我想在帖子正文中包括布尔值和字符串值。

正文如下:{"email":"username@mail.com","密码":"Somepassword","rememberPassword": false,"ip_address":"152.57.31.41","isCaptchaEn的": false}

我不熟悉API调用和JSON。我试着在谷歌上搜索答案,但每个人都在使用地图

共有1个答案

罗兴运
2023-03-14

答案相当简单。我们可以使用JsonObjectRequest并将参数传递给它。这是我的工作代码,以防有人面临同样的天真问题。

String postUrl = "yourURL.....";
            RequestQueue requestQueue = Volley.newRequestQueue(this);

            JSONObject postData = new JSONObject();
            try {
                postData.put("email", editTextEmail.getText().toString());
                postData.put("password", editTextPassword.getText().toString());
                postData.put("rememberPassword", false);
                postData.put("ip_address", "1.41");
                postData.put("isCaptchaEnabled", false);

            } catch (JSONException e) {
                e.printStackTrace();
            }

            JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, postUrl, postData, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Toast.makeText(getApplicationContext(), "Response: "+response, Toast.LENGTH_LONG).show();
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            });

            requestQueue.add(jsonObjectRequest);
 类似资料:
  • 用简单的话来说,我想发送这个数据到服务器,使用Volley Post Request。 它有一个整数和一个字符串,我得到的响应是Jsonarray 我尝试过以下方法,但都不管用 > 因为它是json数组请求,我不能在参数中发送数据,因为第三个参数只需要JsonArray,我必须发送JsonObject,所以保持为null 我不能把它放在中,因为值的1是整数,并且它只接受字符串 getparams(

  • 我正在使用截击与API交互。我需要向返回JSON数组的服务发送post请求(带参数)。 JsonObjectRequest有一个构造函数,它接受一个方法和一组参数 但是JSONArrayRequest(我需要的一个)只有一个构造函数的形式 我如何才能使其发送包含数据的POST请求?

  • 问题内容: 我想通过PHP 在Blogger博客中添加帖子。Google提供了以下示例。如何在PHP中使用它? 您可以通过向带有帖子JSON正文的帖子集合URI发送POST请求来为博客添加帖子: 问题答案: 您需要使用cURL库发送此请求。 如果由于某种原因您不想/不想使用cURL,可以这样做:

  • 我正在用GoogleVolley Api创建一个android应用程序,它处理我的应用程序和php脚本之间的连接。出于某种原因,该应用程序没有向我的服务器发送任何数据,也许这里的某个人可以找到它? 我的方法被正确调用,但是当我尝试打印它时,它返回null!一切实际上都在工作,除了数据没有正确传递,我相信,因为我的php脚本抱怨变量为空

  • 我试图使用Android Volley库发送JSON Post请求,但我似乎没有得到json的正文,我在我的Web服务器上得到未定义的正文参数。我需要json的参数体是一个单一的对象"name=某些Val } 我也在上面的代码中尝试了这一点,但没有成功:

  • 问题内容: 我已经设置好OkHttpClient并成功将GET请求发送到服务器。而且,我还可以将带有空body标签的POST请求发送到服务器。 现在,我正在尝试将以下JSON对象发送到服务器。 为此,我尝试添加OkHttpClient库类,但无法将JSON对象作为http POST请求的主体发送。我尝试通过以下方式构建主体并处理发布请求。 通过POST请求将JSON对象发送到服务器的方式是什么。