C# – Json POST请求已发送但未被PHP服务器接收
我正在从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数据”。
这是服务器上的日志行 :
这是wireshark中的行 :
有人看到了这个问题吗? 如果我不清楚,请不要犹豫告诉我。 可能是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
了解其他旋钮。