从C#到php的JSON调用

时间:2015-01-21 14:11:49

标签: c# php json

我正在尝试从我的c#代码中调用PHP文件。这是我的c#代码。

  User user = new User();
                user.firstname = "aaaa";
                user.secondname = "aaaaaaaaaaa";
                user.email = "aaa";
                user.phonenumber = "aaa";

                string json = JsonConvert.SerializeObject(user);
                HttpWebRequest request = WebRequest.Create("http://localhost") as HttpWebRequest;
                request.ContentType = "application/json";
                //request.Accept = "application/json, text/javascript, */*";
                request.Method = "POST";
                using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
                {
                    writer.Write(json);
                }
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                Stream stream = response.GetResponseStream() ;

                string json1 = "";

                using (StreamReader reader = new StreamReader(stream))
                {
                    while (!reader.EndOfStream)
                    {
                        json1 += reader.ReadLine();
                    }
                }

                MessageBox.Show(json1);

我的问题是c#方法没有发送我的对象而我的php代码是

<?php    
     echo  json_encode($_POST);
?>

请帮助

2 个答案:

答案 0 :(得分:1)

$ _ POST并不理解json,因为我的评论指向SO上其他地方的解决方案(Google让生活更轻松)

以下是推荐使用的代码:

$data = json_decode(file_get_contents('php://input'), true);
print_r($data);

答案 1 :(得分:0)

问题是您的C#正在发送原始POST数据,而PHP $_POST数组仅适用于URL编码的键/值对。

在PHP端,检索原始POST数据,绕过$_POST数组。此外,JSON编码PHP方面的数据也没有意义,因为它已经是JSON。使用json_decode()进行反向操作。

echo file_get_contents("php://input");