我尝试使用Google Volley通过调用API更新服务器上的数据库。但不知何故,数据库不会更新。检索数据时,问题不存在(Method.GET)
这是我的snipet代码:
HashMap<String, String> params = new HashMap<>();
params.put(.....);
JsonObjectRequest postReq = new JsonObjectRequest(Request.Method.POST,
Api.URL_POST_DATA, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
progressDialog.setVisibility(View.GONE);
if (response.toString().equalsIgnoreCase("{\"result\":\"OK\"}")) {
Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Failed", Toast.LENGTH_SHORT).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.setVisibility(View.GONE);
Toast.makeText(MainActivity.this, "Check internet connection", Toast.LENGTH_SHORT).show();
}
});
postReq.setRetryPolicy(new DefaultRetryPolicy(10000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
postReq.setShouldCache(false);
VolleyHelper.getInstance(this).addToRequestQueue(postReq);
VolleyHelper.getInstance(this).getRequestQueue().getCache().invalidate(Api.URL_POST_DATA, true);
然后我尝试使用PostMan手动更新数据库,以确保我的API端和我的数据库上的问题没有成功更新。
我的代码出错吗?任何帮助将非常感激。
由于
答案 0 :(得分:0)
将请求标头的Content-Type
值设置为“application/json
”。这可能是个问题。
为此,您需要覆盖请求对象上的getHeaders()
方法。
答案 1 :(得分:0)
谢谢大家的线索,我做错了。我发送了HashMap但是根据我的请求发送了JsonObjectRequest。所以我使用StringObject而不是JsonObjectRequest。