2010-05-09 1 views
2

Я хочу войти на сайт, используя код C#.Использование данных C# для HttpPost на веб-странице

Вот HTML код примера формы:

<form action="http://www.site.com/login.php" method="post" name="login" id="login"> 
<table border="0" cellpadding="2" cellspacing="0"> 
<tbody> 
<tr><td><b>User:</b></td><td colspan=\"2\"><b>Password:</b></td></tr> 
<tr> 
<td><input class="inputbg" name="user" type="text"></td> 
<td><input class="inputbg" name="password" type="password"></td> 
<td><input type="submit" name="user_control" value="Submit" class="buttonbg"></td> 
</tr> 
</tbody></table> 
</form> 

Это то, что я пытался до сих пор с неудачными результатами:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.site.com/login.php"); 
request.Method = "POST"; 
using (StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII)) 
{ 
    writer.Write("user=user&password=pass&user_control=Eingabe"); 
} 

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
{ 
    stream = new StreamWriter("login.html"); 
    stream.Write(reader.ReadToEnd()); 
    stream.Close(); 
} 

Любые идеи, почему это не удается?

+0

мммм .... что? ваш вопрос не имеет ясности и контекста. –

+0

Ну, у меня есть веб-страница, где html formular не включен. И я хочу войти в систему с помощью C# и отобразить страницу, но в состоянии входа в систему. Страница, например, http://www.site.com и формальные переадресации на http://www.site.com/login.php. Это достаточно ясно? – druffmuff

+0

Я думаю, он хочет написать свой собственный код, который входит на сайт, похожий на HTML, который он опубликовал. –

ответ

0

Посмотрите на cookiecontainer.

Веб-сайты, использующие аутентификацию на основе форм, обычно полагаются на файлы cookie. Без настройки cookie-коннектора запроса он не будет поддерживать файлы cookie.

0

Я бы предложил использовать Fiddler2, чтобы узнать, какая именно разница между POST и браузером.

Кроме того, я предпочитаю использовать класс WebClient, так как это хорошая абстракция om GET/POST и проста в использовании.

Пример кода,

https://github.com/alexanderbeletsky/trackyt.api.csharp/blob/master/Trackyt.Api/Adapter/Adapter.cs