我在下面的代码中创建了一个Custom JSONObjectRequest。
目前我做了Request.Method.POST
,我在这里传递给超级班时确认了
super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener, errorListener);
。它以int 1
(POST)收到,但在我的服务器(PHP)上收到时,日志收到"REQUEST_METHOD":"GET"
有没有人遇到过这种问题,或者可以帮助指出我在下面的代码中错过了什么。 正如你在下面看到的,我确定了下面的事情:
params
不为空getParams()
函数且params
不为空getBody()
并确保它不返回null 请参阅下面的代码,了解我曾尝试过的事情
try {
JsonObjectRequest stringRequest = new JsonObjectRequest(Request.Method.POST, url, params, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
if (jsonObject != null && jsonObject.length() > 0) {
try {
if (jsonObject.getInt("status") == ResponseCode.LOGIN_FAILED) {
SharedManager sharedManager = new SharedManager();
sharedManager.logoutUser(context, true);
return;
}
} catch (JSONException e) {
e.printStackTrace();
}
}
callback.onSuccessResponse(jsonObject);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
callback.onErrorResponse(error);
}
}) {
/**
* Passing some request headers
* */
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return headers;
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
try {
return JSONHelperConverter.jsonToMapString(params);
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8;";
}
@Override
public byte[] getBody() {
try {
String postBody = null;
try {
postBody = createPostBody(JSONHelperConverter.toMapString(params));
postBody = params.toString();
} catch (JSONException e) {
e.printStackTrace();
}
return postBody == null ? null : postBody.getBytes("utf-8");
} catch (NegativeArraySizeException n) {
n.printStackTrace();
return null;
} catch (UnsupportedEncodingException uee) {
uee.printStackTrace();
return null;
}
}
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
String responseString;
JSONObject jsonObject = null;
if (response != null) {
try {
responseString = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
jsonObject = new JSONObject(responseString);
} catch (Exception e) {
e.printStackTrace();
}
}
return Response.success(jsonObject, HttpHeaderParser.parseCacheHeaders(response));
}
};
NetworkSingleton.getInstance(context).addToRequestQueue(stringRequest);
} catch (NegativeArraySizeException n) {
n.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:0)
我解决了自己的问题 Sent POST request but server says GET request in Android volley, what I am doing wrong here?
<强>解决方案:强> 由于我要求PHP服务器,我需要指出文件名。
目前我将请求指向没有文件扩展名的网址,我只需将index.php
添加到我的网址末尾即可。