android - 使用 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 传递参数
解决方案
最有可能的错误在于标头参数"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
希望这能解决您的问题。
推荐阅读
- .net - 从 1.0 升级后 Azure Function 2.0 中的依赖注入不起作用
- android - 如何使用 Runnable 和布尔标志自动/定期滚动 recyclerView
- ios - 导航栏的右键不见了
- django - 使用 Django/Postgres 获取一个计算字段,如果不存在另一个字段值,则获取一个字段值
- ios - 我无法从 NSArray(contentsOfFile: ) 获取数据,它返回 nil
- r - 在包 recharts 中找不到函数 echartR
- c# - 是否可以一次阻止多个设备同步到 Google 云端硬盘?
- javascript - 响应时字体大小不同
- python - 如何使用另一个数组更改数组的内容?
- node.js - 将 XLSX 文件存储在 CosmosDB 中并能够将结果分块发送回的最佳方法?