JSON从C#发送,但在php中未作为JSON接收

本文关键字:JSON 接收 但在 发送 php | 更新日期: 2023-09-27 18:19:53

我的目的是将JSON从C#发送到PHP,然后在PHP端进一步解码以用于我的目的
PHP端的错误为:

警告:json_decode()要求参数1为字符串,数组在第24行的/home3/alsonsrnd/public_html/test/sync.php中给定

我使用以下代码使用C#将JSON发送到我的PHP代码:

  private void sendData()
     {
        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://alnnovative.com/test/sync.php");
        httpWebRequest.ContentType = "text/json";
        httpWebRequest.Method = "POST";
        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = "{'"user'":'"test'"," +
                          "'"password'":'"bla'"}";
            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
        }
    }

在PHP上,我使用带斜杠和json_decode()来解码json。我的PHP代码给出了一个错误,即接收到的字符串是一个数组而不是JSON,因此它无法使用JSON_decode对其进行解码。这可能是什么原因?由于我正在从C#发送正确格式的JSON

我的PHP代码是:

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $json=$_POST;
    if (get_magic_quotes_gpc()){
        $json = stripslashes($json);
    }
    //Decode JSON into an Array
    $data = json_decode($json);
}

JSON从C#发送,但在php中未作为JSON接收

首先,您必须更改内容类型头

httpWebRequest.ContentType = "application/x-www-form-urlencoded";

其次,你发送的数据格式错误

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                string json = "json=" + "{'"user'":'"test'"," +
                              "'"password'":'"bla'"}"; ;
                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
            }

最后,您以错误的方式接收数据,$_POST是一个数组,因此

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['json']))
{
    $json=$_POST['json'];
    if (get_magic_quotes_gpc()){
        $json = stripslashes($json);
    }
    //Decode JSON into an Array
    $data = json_decode($json, true);
}