C# – Json POST请求已发送但未被PH​​P服务器接收

我正在从C#windowsform应用程序向OpenShift(Redhat)上托管的PHP服务器发送HTTP请求。 我使用POST方法,使用Json数据。

问题是:

  • 数据似乎被正确发送(我看到wireshark中的数据包)
  • php脚本正确启动,我在日志中看到收到了一条POST消息
  • 但没有收到任何POST数据..

这是C#代码

string json = "{\"user\":\"test\"," + "\"n\":\"2\"}"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://........rhcloud.com/webservices.php"); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = json.Length; using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(json); streamWriter.Close(); var httpResponse = (HttpWebResponse)request.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); Debug.WriteLine("R : " + result); } } 

这是PHP代码

 echo "Start Saving ! "; // Handle Posted Data From C# App if (isset($_POST) && !empty($_POST)) { echo 'Data Recieved'; } else { // Error echo 'No POST Data Found'; } 

该函数始终返回 :“开始保存!未找到POST数据”。

这是服务器上的日志行https://dl.dropboxusercontent.com/u/14737942/log.png

这是wireshark中的行https://dl.dropboxusercontent.com/u/14737942/Wireshark_capture.png

有人看到了这个问题吗? 如果我不清楚,请不要犹豫告诉我。 可能是Openshift拦截数据吗? 我的php文件有问题吗?

PHP的$_POST不了解JSON。

你想要的是什么

 // Error handling is left as an exercise $input = json_decode(file_get_contents('php://input'), true); 

然后,您应该能够以您似乎想要使用$_POST的方式使用$input 。 请参阅json_decode了解其他旋钮。