使用C#WebRequest进行POST时,$ _POST数组为空

时间:2012-04-26 23:06:46

标签: c# php

我一直在尝试使用JSON进行一些客户端 - 服务器交互,但是,我发布到服务器的数据没有到达;我的PHP脚本中的$_POST数组是空的。

我刚刚从MSDN直接抓取WebRequest示例并对其进行测试。那仍然行不通。我也试过用HTML表单发布一些数据,这很好。我完全难过了。

当我在PHP中调用getallheaders()时,我得到了

OK
array(5) {
  ["Content-Type"]=>
    string(33) "application/x-www-form-urlencoded"
  ["Host"]=>
    string(9) "localhost"
  ["Content-Length"]=>
    string(2) "54"
  ["Expect"]=>
    string(12) "100-continue"
  ["Connection"]=>
    string(10) "Keep-Alive"

虽然执行var_dump($ _ POST)返回数组(0)

有人可以提出任何建议吗?

2 个答案:

答案 0 :(得分:1)

MSDN中的代码发送一个原始字符串,因此PHP不知道如何将其强制转换为字段并将其放入$_POST。您应该能够使用file_get_contents('php://input')获取POST数据。

如果您希望数据到达$_POST,则需要对其进行编码(与编码方式相同,与编码GET参数的方式相同:

string postData="fieldName="+System.Web.HttpUtility.UrlEncode("The data that goes in the field");

与往常一样,如果您需要多个字段,则需要将它们与& s分开。

答案 1 :(得分:0)

这些只是你的标题。您不应该期望在getallheaders()调用的结果中使用POST参数。您正在发送某些内容,因为内容长度建议为54个字节。尝试var dumping $ _REQUEST参数,看看它们是否正在使用其他方法提交。