C#-PHP服务器已发送但未收到Json POST请求
作者:互联网
我正在将C#Windowsform应用程序中的HTTP请求发送到OpenShift(Redhat)上托管的PHP服务器.我正在使用Json数据的POST方法.
问题是:
>数据似乎已正确发送(我在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
.
标签:php,json,post,request,c-2 来源: https://codeday.me/bug/20191013/1908073.html