我的代码正在尝试将数据发布到服务器,我需要添加标题,我正在使用Volley库。
如果我不包含“getparams”方法,请求有效,我可以发布但没有数据。
如果我包含“getparams”方法,请求将失败并返回400(错误请求)。
我无法找出错误的位置。
Convert
答案 0 :(得分:3)
对于身份验证,您应该在 getHeaders 中包含该信息,而不是 getParams
将getParams和添加移除到您的getHeaders
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
String credentials = "username:password";
String auth = "Basic "
+ Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
headers.put("Accept", "application/json");
headers.put("Content-Type", "application/json");
headers.put("Authorization", auth);
return headers;
}
希望有所帮助
答案 1 :(得分:0)
我没有多少使用截击,但我有一个替代方案可以轻松完成你的工作。如果你想使用AsyncHTTPClient尝试这个。
public void tryPost(){
AsynHTTPClient client = new AsyncHTTPClient();
//to add the data which you wanna post
RequestParams params = new RequestParams();
params.add("pass your value","from this value");
params.put("list","your_list"); // this is for passing the arraylist
client.post(url, params, new AsynchHTTPRespondHandeler(){
// implement method to get the response from onSuccess()
});
}
对于AsynchHTTPClient,请在您的gradle中执行此操作:
compile 'com.loopj.android:android-async-http:1.4.9'
您可以了解有关RequestParams的更多信息,以便传递不同的数据here。
我希望你能用这个来做你的工作。请问我有任何问题。
答案 2 :(得分:0)
请检查此链接:
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
///handle response from service
}, new ErrorResponse() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//handle error response
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
//add params <key,value>
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> headers = Constants.getHeaders(context);
// add headers <key,value>
String credentials = USERNAME+":"+PASSWORD;
String auth = "Basic "
+ Base64.encodeToString(credentials.getBytes(),
Base64.NO_WRAP);
headers.put("Authorization", auth);
return headers;
}
};
mQueue.add(request);
答案 3 :(得分:0)
对于POST请求,对于 Header 部分,您必须覆盖 getHeaders()'function',对于请求的**负载/正文**可以提供 JsonObject 作为您“请求”的参数,也可以覆盖 getParams()“函数”
Kotlin程序员的邮政编码:
//创建Json有效负载
skip_before_action :set_task, only: [:delete_all]
//将上面的有效负载传递给下面的请求 [然后无需重写'getParams()'方法]
val requestJsonPayloadMap = mutableMapOf<String, String>()
requestJsonPayloadMap["param1"] = "param1Value"
requestJsonPayloadMap["param2"] = "param2Value"
// Creating JSON Object out of the Hash-map
val requestJSONObject = JSONObject(requestJsonPayloadMap)