【问题标题】:I can't send POST request from android volley to php我无法将 POST 请求从 android volley 发送到 php
【发布时间】: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。我用邮递员检查

标签: php android post


【解决方案1】:

我从网址中删除了“www”,它解决了我的问题。这个 SO 问题POST Requests seen as GET by server 帮助了

【讨论】:

    猜你喜欢
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多