编程语言
首页 > 编程语言> > C#-PHP服务器已发送但未收到Json POST请求

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