Наткнувшись на проблему при этом, я сначала искал SO, чтобы попытаться выяснить, были ли у других подобные проблемы, и нашел этот вопрос: POST-данные на PHP-страницу из C# WinForm
Однако, когда я попробовал пример кода, приведенный в ответе на этот вопрос, он не работает. PHP-скрипт, который я запрашиваю, отвечает сообщением, указывающим, что переменная POST, которая должна быть установлена, не установлена. Вот мой код С#:
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();
?>
Когда я делаю запрос POST из своей программы на C#, я вижу следующий экран, показывающий, что переменная action
не была установлена. Я упускаю очевидное в своем коде?
Спасибо тем, кто ответит.
POSTdata
на"action=" + HttpUtility.UrlEncode("date") + "\r\n"
вызывает WebException. То же самое, если я попробую\r
и\n
по отдельности. - person LMS   schedule 27.09.2012action
всегда выглядит как null при создании запроса из программы C#. - person LMS   schedule 27.09.2012