2015-03-13 3 views
0

Я пытаюсь запрограммировать приложение, подключающееся к веб-сайту, не спамер, но что-то в этом роде.сохранить сеанс в реальном времени с помощью webclient

Но есть одна проблема:

В этом сайте вы войдите с помощью HTML-форм, и я знаю страницу PHP цель и параметры так с C# я Войти, как это:

using (WebClient wc = new WebClient()) 
{ 
    wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-urlencoded"; 
    wc.UploadString("http://example.com/login/check.php", "username=US&password=PW"); 
    MessageBox.Show(result); 
} 

после logining когда я хочу (например) отправить сообщение (например, коды ниже), ответ заключается в том, что вы не вошли в систему!

using (WebClient wc = new WebClient()) 
{ 
    wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-urlencoded"; 
    wc.UploadString("http://example.com/post/send.php", "title=T&body=B"); 
    MessageBox.Show(result); 
} 

Я думаю, проблема в том, что сессия закрыта. что я могу сделать?

+0

Как сервер отслеживает пользователей, прошедших проверку подлинности? Если ответ на исходный логин включает куки-файл, тогда вам нужно сохранить этот файл cookie в своем коде и использовать его в своих последующих запросах. – David

+0

Он использует сеанс (обычно с файлом cookie). Как я могу использовать куки в моих кодах? –

+0

Я не уверен, что у объекта 'WebClient' есть необходимые операции, вам, вероятно, придется сориентироваться в документации. По сути, вы должны иметь возможность сделать HTTP-запрос, который имеет более богатый ответ, больше, чем просто строку. Этот ответ будет содержать файлы cookie, заголовки и т. Д. Затем вам нужно будет создавать более богатые HTTP-запросы после этого (опять же, больше, чем просто загрузить строку), потому что вам нужно будет включать файлы cookie и заголовки в эти запросы. Может быть, «HttpClient»? Может быть, 'WebRequest'? – David

ответ

1

я не знаю, если вы нашли ответ, но попробовать этот

WebClient webClient = new WebClient(); 
    string url = @"http://example.com/login/check.php"; 
    var postData = new System.Collections.Specialized.NameValueCollection(); 
byte[] bytes = webClient.UploadValues(url,"POST",postData); 

string text = System.Text.Encoding.ASCII.GetString(bytes); 

использовать Fiddler для поиска параметров.

Смежные вопросы