【发布时间】:2019-03-07 22:28:37
【问题描述】:
我正在使用 android volley StringRequest 向已经在线托管的 PHP 文件发送发布请求。这在更改域名之前但在更改域名之后工作,此 PHP 文件不再接收凌空请求作为发布请求。在 PHP 文件 $_SERVER['REQUEST_METHOD'] 中返回 GET 而不是 POST。
这是android volley请求代码sn-p
StringRequest request = new StringRequest(Request.Method.POST, postURL, new Response.Listener<String>(){
@Override
public void onResponse(String s) {
Log.d("MY_DEBUG",s);
}
},new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError volleyError) {
}
}) {
@Override
public Map<String, String> getHeaders()
{
Map<String, String> parameters = new HashMap<>();
parameters.put("Connection", "Keep-Alive");
return parameters;
}
@Override
public String getBodyContentType() {
//return "application/x-www-form-urlencoded; charset=UTF-8";
return "application/x-www-form-urlencoded";
}
//adding parameters to send
@Override
protected Map<String, String> getParams() {
Map<String, String> parameters = new HashMap<>();
parameters.put("request", "edit_product");
parameters.put("id", id);
return parameters;
}
};
request.setShouldCache(false);
InitiateVolley.getInstance().addToRequestQueue(request);
这里是 PHP 文件中处理来自 android volley 的 post 请求的前几行代码
if($_SERVER['REQUEST_METHOD']=='POST'){
//it's a POST request, We are good to go...handle the post request.
}else{
//not a POST request, kill it here
echo "error";
die();
}
什么可能导致此问题?我必须在 PHP 端进行设置吗?或者也许是新域的 PHP 版本?请帮忙
【问题讨论】:
-
尝试使用一些 REST 工具检查它,例如 Postman
-
@VladyslavMatviienko,邮递员仍将其视为 GET 请求。我刚刚试了一下
-
尝试删除getBodyContentType()方法和getHeaders()方法。
-
那么如您所见,它与 Android 无关。尝试在 PHP 端记录
$_SERVER['REQUEST_METHOD']值,例如返回它而不是else中的 ``error` -
@VladyslavMatviienko,
$_SERVER['REQUEST_METHOD']返回 GET。我用邮递员检查