gpt4 book ai didi

c# - 如何 POST NULL 值 C#

转载 作者:行者123 更新时间:2023-11-30 23:01:22 26 4
gpt4 key购买 nike

我需要将数据从 C# WinForms 应用程序发布到 PHP 页面。我正在使用带有以下示例代码的 WebClient:

using (WebClient client = new WebClient())
{
NameValueCollection values = new NameValueCollection();
values.Add("menu_parent", null);

string URL = "http://192.168.20.152/test.php";
byte[] response = client.UploadValues(URL, values);

string responseString = Encoding.Default.GetString(response);

MessageBox.Show(responseString);
}

在 PHP 方面,我正在执行简单的 IF 条件以使用这个非常简化的代码测试 menu_parent 是否为 NULL:

<?php
$parent = $_POST['menu_parent'];

if ($parent === null)
echo "menu_parent is null";
else
echo "menu_parent is: <".$parent.">"; // This prints out.

if (is_null($parent))
echo "menu_parent is also null";
else
echo "menu_parent is also: <".$parent.">" // This also prints out.

if ($parent === "")
echo "menu_parent is empty string"; // This also prints out.
else
echo "menu_parent is not empty";
?>

问题是 menu_parentNULL 值在 PHP 页面中被转换为空字符串。我检查了 MSDN page about WebClient.UploadValues method还有NameValueCollection class .该页面表示接受 NULL 值。如何发布空值?在这种情况下,NULL 值是 Not Acceptable 吗?

最佳答案

HTTP 协议(protocol)是一种文本协议(protocol),因此您不能真正发送“空”值。

假设您使用的是 JSON.net库(尽管可能有等效的方法来执行此内置操作)。

using (WebClient client = new WebClient())
{
var values = new Dictionary<string,object> { { "menu_parent",null } };
var parameterJson = JsonConvert.SerializeObject(values);
client.Headers.Add("Content-Type", "application/json");

string URL = "http://192.168.20.152/test.php";
byte[] response = client.UploadData(URL, Encoding.UTF8.GetBytes(parameterJson));

string responseString = Encoding.Default.GetString(response);

MessageBox.Show(responseString);
}

然后在 PHP 中你可以这样做:

$data = json_decode(file_get_contents('php://input'));
if ($data->menu_parent === null) {
//should work
}

关于c# - 如何 POST NULL 值 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51076315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com