我在这里看到一些有同样问题的帖子,但没有一个像我一样简单,因此也是帖子。
我是php新手,我发现$_POST
和$_REQUEST
变量都是空的。我可以使用apache_request_headers()
获取标题,并且能够正确查看标题。只是$_POST
变量是空的。
我的客户端是Android应用,正在正确生成帖子消息。我用tcpdump来测试它。此外,apache日志显示调用了预期的PHP。我使用Apache 2.2.14和PHP 5.2.12标准安装,没什么特别的。
有人能想出$_POST
变量为空的原因吗?
此外,我在代码中没有使用类。它只是简单的代码,根据需要调用其他类的函数。我之所以提到这一点,是因为我看到了另一篇建议使用$this->input->post()
的帖子,但在我的情况下这是不可能的。
答案 0 :(得分:3)
确保您的Android客户端在POST上发送正确的内容类型。它应设置为 application / x-www-form-urlencoded 。
url = new URL("your URL");
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestMethod("POST");
答案 1 :(得分:1)
首先,我会检查您的服务器是否未使用301'永久移动'代码重定向POST数据。打开你的日志文件来检查这个。如果它运行良好,你应该看到200代码(或最坏的201)。您会注意到,对于每次调用服务器,都会生成POST和GET代码。确保两者都是200.如果只有GET是200但POST是301,那么您的服务器由于某种原因而重定向(例如,您正在调用http://mysite.com,但服务器重定向到http://www.mysite.com)。
如果你需要在没有返回值的情况下测试GET,那么在android中使用HttpPost尝试类似这样的东西:
HttpPost httppost = new HttpPost("http://www.mysite.com?somevarname=somevalue");
httpclient.execute(httppost);
然后从服务器端尝试执行类似创建文件的操作,或者如果存在GET变量的话。
但是如果您的日志有GET和POST的重定向代码,那么您需要使用.htaccess覆盖重定向或将主机配置为停止任何重定向。
祝你好运!