如何 POST NULL 值 C#
How to POST NULL value C#
我需要 POST 来自 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_parent
的 NULL
值在 PHP 页面中被转换为空字符串。我检查了 MSDN page about WebClient.UploadValues method and also NameValueCollection class。该页面表示接受 NULL
值。如何POST空值?在这种情况下 NULL
值是不可接受的吗?
我总是使用数据模型,并在使用 JsonConvert class 反序列化-序列化后将其作为对象发送到 C# 中。然后在 PHP 中,我总是将它作为对象获取并再次将其转换为相关模型。所以没有 NULL 键值丢失。但是 "NameValueCollection" 在 PHP(?) 中有相同的数据模型,我不知道。
HTTP 协议是文本协议,因此您不能真正发送 "null" 值。
假设您正在使用 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
}
我需要 POST 来自 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_parent
的 NULL
值在 PHP 页面中被转换为空字符串。我检查了 MSDN page about WebClient.UploadValues method and also NameValueCollection class。该页面表示接受 NULL
值。如何POST空值?在这种情况下 NULL
值是不可接受的吗?
我总是使用数据模型,并在使用 JsonConvert class 反序列化-序列化后将其作为对象发送到 C# 中。然后在 PHP 中,我总是将它作为对象获取并再次将其转换为相关模型。所以没有 NULL 键值丢失。但是 "NameValueCollection" 在 PHP(?) 中有相同的数据模型,我不知道。
HTTP 协议是文本协议,因此您不能真正发送 "null" 值。
假设您正在使用 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
}