微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐