gpt4 book ai didi

android - Volley Post JsonObjectRequest 在使用 getHeader 和 getParams 时忽略参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:02:04 30 4
gpt4 key购买 nike

我正在尝试连接 API url="api address",它接受两种 header 类型 application/json 以 json 格式响应,application/xml 以 xml 格式响应。我需要使用 json 参数访问 JSON,响应也将采用 json 格式。使用带有 JsonObjectRequest 的 android volley Post 请求使用 getHeaders 设置 header ,它连接到服务器但 getParams 设置参数不起作用。

RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
Constants.BASE_URL + Constants.LOGIN, null, response,
response_error) {
/**
* Passing some request headers
* */
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}
@Override
protected Map<String, String> getPostParams()
throws AuthFailureError {
// TODO Auto-generated method stub
Map<String, String> params = new HashMap<String, String>();
params.put("key", "value");
return params;
}
};
// implementation of listeners
Response.Listener<JSONObject> response = new Response.Listener<JSONObject>() {

@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
Log.e("responce", response.toString());

// msgResponse.setText(response.toString());
hideProgressDialog();
}
};
Response.ErrorListener response_error = new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
Log.e("error responce", error.getMessage());
VolleyLog.d(TAG, "Error: " + error.getMessage());
hideProgressDialog();
}
};
//get params never get called
//i also tried alternative to send params but does not works.
Map<String, String> params = new HashMap<String, String>();
params.put("key", "value");
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
Constants.BASE_URL + Constants.LOGIN, new JSONObject(params), response,
response_error) {
/**
* Passing some request headers
* */
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json");
return headers;
}
};

any type of help will be appretiated, Thanks in advance.

最佳答案

Volley会忽略你的Content-Type设置,如果你想修改content-type,你可以覆盖getBodyContentType方法:

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, url,
new JSONObject(params), response, response_error) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
}

为什么 Volley 忽略你的参数?看看我的另一个answer .

关于android - Volley Post JsonObjectRequest 在使用 getHeader 和 getParams 时忽略参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24570909/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com