这样做时偶然发现了一个问题,我首先搜索了 SO 以尝试查找其他人是否有类似的问题,并发现了这个问题:POST data to a PHP page from C# WinForm
但是,当我尝试这个问题的答案中给出的代码示例时,它不起作用。我发出请求的 PHP 脚本会响应一条消息,指示未设置必须设置的 POST 变量。这是我的 C# 代码:
HttpWebRequest POSTreq =
(HttpWebRequest)WebRequest.Create("http://82.41.255.140/api/post-ptr");
string POSTdata = "action=" + HttpUtility.UrlEncode("date");
byte[] data = Encoding.ASCII.GetBytes(POSTdata);
POSTreq.Method = "POST";
POSTreq.ContentType = "application/x-www-form-urlencoded";
POSTreq.ContentLength = data.LongLength;
POSTreq.GetRequestStream().Write(data, 0, data.Length);
HttpWebResponse POSTres = (HttpWebResponse)POSTreq.GetResponse();
Console.WriteLine("HTTP Status Code {0}", POSTres.StatusCode);
Console.WriteLine("Response Method: {0}", POSTres.Method);
Console.WriteLine("Response Text: {0}",
new StreamReader(POSTres.GetResponseStream()).ReadToEnd());
Console.ReadLine();
这是 PHP 脚本中的代码:
<?php
$A = strtolower($_POST["action"]);
if ($A == "date")
{
echo date("c");
}
else if ($A == "ip")
{
echo $_SERVER["REMOTE_ADDR"];
}
else if ($A == null || $A == "")
{
echo "bad_request:no_argument:POST_action";
}
else
{
echo "bad_request:invalid_argument:POST_action";
}
exit();
?>
当我从 C# 程序发出 POST 请求时,我看到以下屏幕,表明action
尚未设置变量。我错过了我的代码中的明显内容吗?
感谢回复的人。