首页 > 解决方案 > 使用 Volley 在 POST 请求中发送参数

问题描述

尝试使用他们的 API https://app.swaggerhub.com/apis-docs/premiumize.me/api/1.4#/transfer/transferCreate将 Mangnet 链接添加到 Premiumize 帐户。

响应消息: {"status":"error","message":"src is missing"}

代码如下:-

void pushMagnet(final String apiKey, final String magnetLink, final Context context) {
    final String url = "https://premiumize.me/api/transfer/create?apikey=" + apiKey;

    Map<String, String> magnetSrc = new HashMap<>();
    //Parameters i want to send
    magnetSrc.put("src", magnetLink);

    RequestQueue queue = Volley.newRequestQueue(context);

    JsonObjectRequest stringRequest = new JsonObjectRequest(Request.Method.POST, url,
            //here added as an JSON Object
            new JSONObject(magnetSrc),
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.e("Rest Response:", response.toString());
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("Rest Error:", error.toString());
        }
    }
    ) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> headers = new HashMap<>();
            headers.put("accept", "application/json");
            headers.put("Content-Type", "multipart/form-data");

            return headers;
        }
    };
    queue.add(stringRequest);
}

我也已经在这里尝试过:使用 Volley POST 传递参数

标签: androidpostandroid-volley

解决方案


最有可能的错误在于标头参数"Content-Type"

您使用了错误的标题信息"multipaltform/form-data"

尝试将"Content-Type"to添加"multipart/form-data"到标题数据中。

MULTIPARTDATA 的提交不同于普通形式的提交。您必须使用 MultiPartEntity 而不是 Map。

尝试点击此链接获取多部分数据:How to send a “multipart/form-data” POST in Android with Volley

希望这能解决您的问题。


推荐阅读