【问题标题】:How to send form-data (like in Postman) using Volley?如何使用 Volley 发送表单数据(如在 Postman 中)?
【发布时间】:2019-11-04 06:13:19
【问题描述】:

我已阅读有关此主题的其他帖子,但没有一个对我有用。 使用getParams() 发送原始数据,但一些帖子显示使用相同的发送表单数据。

我尝试使用getBody()getParams() 进行发送,但都返回了错误。

这就是我想要做的

StringRequest stringRequest = new StringRequest(Request.Method.POST, UPDATE_PROFILE_IMAGE_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.d(TAG, "onResponse: " + response);
                Toast.makeText(ProfileActivity.this, String.valueOf(response), Toast.LENGTH_SHORT).show();
            }
        }, Methods.errorListener) {
            @Override
            public String getBodyContentType() {
                return "application/json; charset=utf-8";
            }

            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("id", "1");
                params.put("image", encodedString);
                return params;
            }
        };
        requestQueue.add(stringRequest);

我尝试过使用 Postman,但只有表单数据有效。

【问题讨论】:

    标签: android post android-volley postman


    【解决方案1】:

    试试下面的代码,这可能会有所帮助

        private void postUsingVolley() {
        String tag_json_obj = "json_obj_req";
    
        final ProgressDialog pDialog = new ProgressDialog(this);
        pDialog.setMessage("posting...");
        pDialog.show();
    
        final String mVendorId = DeviceDetails.getInstance(mContext).getVendor_id();
        String mUserId = UserModel.getInstance(mContext).getUser_id();
    
        final HashMap<String, String> postParams = new HashMap<String, String>();
        sendFeedbackParams.put("key1", value1);
        sendFeedbackParams.put("key2", value2);
        sendFeedbackParams.put("key3", value3);
    
        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
                ApplicationData.POST_URL, new JSONObject(postParams),
                new com.android.volley.Response.Listener<JSONObject>() {
    
                    @Override
                    public void onResponse(JSONObject response) {
                        //Log.d("TAG", response.toString());
                        try {
                            //Toast.makeText(mContext, response.getString("message"), Toast.LENGTH_LONG).show();
                            Toast.makeText(mContext, "Thank you for your post", Toast.LENGTH_LONG).show();
    
                            if (response.getBoolean("status")) {
                                pDialog.dismiss();
                                finish();
                            }
                        } catch (JSONException e) {
                            Log.e("TAG", e.toString());
                        }
                        pDialog.dismiss();
                    }
                }, new com.android.volley.Response.ErrorListener() {
    
            @Override
            public void onErrorResponse(VolleyError error) {
                //VolleyLog.d("TAG", "Error: " + error.getMessage());
                pDialog.dismiss();
                if (isNetworkProblem(error)) {
                    Toast.makeText(mContext, "Internet Problem", Toast.LENGTH_SHORT).show();
    
                }
            }
        }) {
    
            @Override
            public String getBodyContentType() {
                return "application/json; charset=utf-8";
            }
    
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                return getRequestHeaders();
            }
        };
    
        jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(8000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);
    }
    

    【讨论】:

      【解决方案2】:

      试试这个代码,我希望它对你有用

      StringRequest stringRequest = new StringRequest(Request.Method.POST, UPDATE_PROFILE_IMAGE_URL, new Response.Listener<String>() {
              @Override
              public void onResponse(String response) {
                  Log.d(TAG, "onResponse: " + response);
                  Toast.makeText(ProfileActivity.this, String.valueOf(response), Toast.LENGTH_SHORT).show();
              }
          }, new Response.ErrorListener() {
              @Override
              public void onErrorResponse(VolleyError error) {
                  Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show();
              }
          }) 
      
              @Override
              protected Map<String, String> getParams() throws AuthFailureError {
                  Map<String, String> params = new HashMap<>();
                  params.put("id", "1");
                  params.put("image", encodedString);
                  return params;
              }
          };
          requestQueue.add(stringRequest);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-25
        • 1970-01-01
        • 2023-02-10
        • 2019-06-16
        • 2018-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多