Отправка POST запросов с помощью сокетов и получение ответа
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 03:05:41.196666
|
|
|
serber
Сообщений: 7
Оценки: 0
Присоединился: 2006-04-15 15:05:17
|
Необходимо сделать следующее: отправтиь на сервер с помощью сокетов параметры для авторизации на сайте. И в случае удачной авторизации, получить страницу (хтмл). Я делаю так, но почему то от сервера приходит только заголовок: public string Login(string email, string pass)
{
IPHostEntry hostEntry = Dns.GetHostEntry(url);
IPAddress address = hostEntry.AddressList[0];
IPEndPoint ipe = new IPEndPoint(address, 80);
socket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
try
{
socket.Connect(ipe);
if (socket.Connected)
{
Console.WriteLine("Connected to " + ipe.ToString());
}
else
{
Console.WriteLine("Can not connect...");
}
}
catch (SocketException ex)
{
Console.WriteLine(ex.Message);
}
string parameters = "success_url=&fail_url=&try_to_login=1&email=" + email + "&pass=" + pass;
byte[] par = Encoding.ASCII.GetBytes(parameters);
string request = "POST /login.php HTTP/1.0\r\n" +
"Content-Length: " + par.Length + "\r\n" +
"Host: " + url + "\r\n" +
"Content-Type: application/x-www-form-urlencoded\r\n\r\n" +
parameters;
Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
Byte[] bytesReceived = new Byte[1024];
socket.Send(bytesSent, bytesSent.Length, 0);
string page = "";
int bytes = 0;
do
{
bytes = socket.Receive(bytesReceived, bytesReceived.Length, 0);
page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
}
while (bytes > 0);
return page;
} Код работает, только от сервера приходит такой заголовок, а не сама страница. Как это можно исправить? HTTP/1.1 302 Found Server: nginx/0.5.35 Date: Wed, 09 Apr 2008 22:00:05 GMT Content-Type: text/html; charset=windows-1251 Connection: close X-Powered-By: PHP/5.2.0-8+etch10 Pragma: no-cache
|
|
|
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 09:38:30.133333
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
Вообще, вместе с 302 ответом должен приходить "Location: ". Попробуй дописать в заголовки реферер и юзер-агент. Может поможет.
|
|
|
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 13:58:33.463333
|
|
|
serber
Сообщений: 7
Оценки: 0
Присоединился: 2006-04-15 15:05:17
|
Приходит такой ответ: HTTP/1.1 302 Found
Server: nginx/0.5.35
Date: Thu, 10 Apr 2008 09:55:25 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
X-Powered-By: PHP/5.2.0-8+etch10
Pragma: no-cache
Cache-control: private, must-revalidate
Set-Cookie: remixchk=5; expires=Fri, 10-Apr-2009 09:55:25 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixchk=5; expires=Fri, 10-Apr-2009 09:55:25 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixmid=***; expires=Fri, 10-Apr-2009 09:55:25 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixemail=***; expires=Fri, 10-Apr-2009 09:55:25 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixpass=***; expires=Fri, 10-Apr-2009 09:55:25 GMT; path=/; domain=.vkontakte.ru
Set-Cookie: remixcookietest=deleted; expires=Wed, 11-Apr-2007 09:55:24 GMT; path=/; domain=.vkontakte.ru
Location: /id****
Content-Length: 0 Вот только как получить страницу, указанную в Location? Отправить запрос GET?
|
|
|
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 14:40:42.170000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: serber Вот только как получить страницу, указанную в Location? Отправить запрос GET? Ну а rfc на http почитать слабо? Их ведь не случайно придумали.
|
|
|
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 14:44:46.363333
|
|
|
serber
Сообщений: 7
Оценки: 0
Присоединился: 2006-04-15 15:05:17
|
quote:
ORIGINAL: rgo Ну а rfc на http почитать слабо? Их ведь не случайно придумали. Первым делом прочитал.
|
|
|
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 19:50:50.823333
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
quote:
Вот только как получить страницу, указанную в Location? Отправить запрос GET? дык просто в свойже запрос подставляй адрес, который тебе сервак выдал в поле Location.
|
|
|
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 21:36:09.446666
|
|
|
serber
Сообщений: 7
Оценки: 0
Присоединился: 2006-04-15 15:05:17
|
quote:
дык просто в свойже запрос подставляй адрес, который тебе сервак выдал в поле Location Так и делаю. Но Вконтакте такое не прокатывает. На других сайтах работает
|
|
|
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 21:42:31.680000
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
а ты не забыл куки на сервак передавать?
|
|
|
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 22:10:04.250000
|
|
|
serber
Сообщений: 7
Оценки: 0
Присоединился: 2006-04-15 15:05:17
|
quote:
а ты не забыл куки на сервак передавать? Оппа, забыл. Подскажите как это сделать.
|
|
|
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-11 10:15:07.493333
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
http://phpclub.ru/detail/article/http_request Вот те линк, чтоб более менне разобратся в заголовках. Полученные куки просто возвращаешь серваку.
|
|
|
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-11 17:27:53.120000
|
|
|
necrostaz
Сообщений: 172
Оценки: 0
Присоединился: 2007-02-27 15:54:59.460000
|
quote:
Полученные куки просто возвращаешь серваку. Только не забудь учесть expires, path и domain )) И вообще пользуйся снифером, тогда таких вопросов возникать не будет.
|
|
|
|
|