Я пытаюсь переписать некоторый php-код сервера, который регистрируется на веб-сайте, используя каноническое использование HttpWebRequest, найденное по всей сети на сайтах C #:
HttpWebRequest BuildPOST(string url, string parameters)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(parameters);
Stream os = null;
try
{
request.ContentType = "application/x-www-form-urlencoded";
equest.ContentLength = bytes.Length;
os = request.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
}
catch (WebException ex)
{
Console.WriteLine("{0} HttpPost: Request error", ex.Message);
}
finally
{
if (os != null)
{
os.Close();
}
}
return request;
}
, вызываемое с помощью:
string login_url = "http://www.sailonline.org/community/accounts/login/";
string login_post_data = "next=/windy/run/{0}/&password={1}&username={2}"; // race, pwd, boat
HttpWebRequest req = BuildPOST(login_url, string.Format(login_post_data, race, pwd, user));
Исходный php:
include 'phplib.php';
$url = "http://www.sailonline.org/community/accounts/login/";
$postdata = sprintf("next=/windy/run/%s/&password=%s&username=%s", $race, $key, $boat);
$html = get_pipe_output(build_post_url($url, $postdata));
Однако код C # не генерирует такой же ответ от сервера, как код php.Вместо этого я получаю страницу с просьбой ввести данные для входа (которые были правильно введены в посте для начала).
Я немного новичок в сетевом программировании, и просто не могу понять, почему это приносит пользу.Я выследил пакеты из своего кода, страницы, обслуживающей php, и исходной страницы входа на веб-сайте, о которой идет речь, и не вижу любой разницы между запросами, только тот, который создан из кода C #, не имеетожидаемый ответ.
Все, что я могу думать, это, может быть, функции php делают что-то, о чем я не знаю ??