使用 Volley 在 POST 请求中发送参数
Sending Parameters in a POST request using Volley
正在尝试将 Mangnet Link 添加到使用其 API https://app.swaggerhub.com/apis-docs/premiumize.me/api/1.4#/transfer/transferCreate 的 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);
}
我也已经在这里尝试过了:
最有可能的错误是在 header 参数 "Content-Type"。
您使用了不正确的 header 信息 "multipaltform/form-data"
尝试将 "Content-Type"
到 "multipart/form-data"
添加到 header 数据。
MULTIPARTDATA的提交与提交正常形式不同。您必须使用 MultiPartEntity 而不是 Map。
对于多部分数据,请尝试遵循此 link:How to send a “multipart/form-data” POST in Android with Volley
希望这能解决您的问题。
解决方法:
使用这个库和这个代码:
https://github.com/amitshekhariitbhu/Fast-Android-Networking
void pushMagnet(final String apiKey, final String magnetLink, final Context context) {
final String url = "https://premiumize.me/api/transfer/create?apikey=" + apiKey;
JSONObject srcMagnet = new JSONObject();
try {
srcMagnet.put("src", magnetLink);
} catch (JSONException e) {
e.printStackTrace();
}
OkHttpClient client = new OkHttpClient().newBuilder()
.addInterceptor(new GzipRequestInterceptor()).build();
AndroidNetworking.initialize(context, client);
AndroidNetworking.post(url)
.addHeaders("accept", "application/json")
.addHeaders("Content-Type", "multipart/form-data")
.addQueryParameter("src", magnetLink)
.build().getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
Log.e("Server response:", response.toString());
}
@Override
public void onError(ANError anError) {
Log.e("Server error:", anError.toString());
}
});
}
要在 volley 中发送参数,您需要覆盖 getParams()
@Override
protected Map<String,String> getParams()
{
Map<String,String> params = new HashMap<>();
// the POST parameters:
params.put("src", magnetLink);
Log.d("Volley","Volley params "+params);
return params;
}
正在尝试将 Mangnet Link 添加到使用其 API https://app.swaggerhub.com/apis-docs/premiumize.me/api/1.4#/transfer/transferCreate 的 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);
}
我也已经在这里尝试过了:
最有可能的错误是在 header 参数 "Content-Type"。
您使用了不正确的 header 信息 "multipaltform/form-data"
尝试将 "Content-Type"
到 "multipart/form-data"
添加到 header 数据。
MULTIPARTDATA的提交与提交正常形式不同。您必须使用 MultiPartEntity 而不是 Map。
对于多部分数据,请尝试遵循此 link:How to send a “multipart/form-data” POST in Android with Volley
希望这能解决您的问题。
解决方法:
使用这个库和这个代码:
https://github.com/amitshekhariitbhu/Fast-Android-Networking
void pushMagnet(final String apiKey, final String magnetLink, final Context context) {
final String url = "https://premiumize.me/api/transfer/create?apikey=" + apiKey;
JSONObject srcMagnet = new JSONObject();
try {
srcMagnet.put("src", magnetLink);
} catch (JSONException e) {
e.printStackTrace();
}
OkHttpClient client = new OkHttpClient().newBuilder()
.addInterceptor(new GzipRequestInterceptor()).build();
AndroidNetworking.initialize(context, client);
AndroidNetworking.post(url)
.addHeaders("accept", "application/json")
.addHeaders("Content-Type", "multipart/form-data")
.addQueryParameter("src", magnetLink)
.build().getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
Log.e("Server response:", response.toString());
}
@Override
public void onError(ANError anError) {
Log.e("Server error:", anError.toString());
}
});
}
要在 volley 中发送参数,您需要覆盖 getParams()
@Override
protected Map<String,String> getParams()
{
Map<String,String> params = new HashMap<>();
// the POST parameters:
params.put("src", magnetLink);
Log.d("Volley","Volley params "+params);
return params;
}