![](/zhyk/misc/sp.gif) |
с# HttpWebRequest - Вопросы и ответы, обсуждения - Ваши вопросы по C# только в данном разделе |
22.12.2011, 17:22
|
#1
|
|
|
|
Разведчик
|
![](/zhyk/misc/regist.png) Регистрация: 31.08.2010
![](/zhyk/misc/messages.png) Сообщений: 32
![](/zhyk/misc/reput.png) Популярность: 12
![](/zhyk/misc/thnx.png) Сказал(а) спасибо: 40
Поблагодарили 1 раз в 1 сообщении
|
с# HttpWebRequest
Пытаюсь написать автологинер для браузерной игры heroeswm.ru. Написал класс для повседневной отправки запросов и получения ответов. На любых других сайтах он работает отменно, но для этого всё как то очень странно. Запуская программу первый раз с обычным GET запросом главной страницы получаю ответ, но далее приходит абсолютно рандомная хрень. Именно со второго раза и далее. У меня вообще идей нет, почему это происходит.
Вот код класса отправки\принятия сообщений:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace WebManager
{
class WebConstants
{
public static readonly string ContentType = "application/x-www-form-urlencoded";
public static readonly string UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7";
public static readonly string Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
}
public class WebSession
{
private string main_site;
private CookieContainer cook;
public string user_agent;
public string referer;
public WebSession()
{
cook = new CookieContainer();
}
public WebSession(string site)
: this()
{
main_site = site;
user_agent = WebConstants.UserAgent;
referer = "";
}
public string SendRequest(string path, string method, string options)
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(main_site + path);
req.Method = method;
req.CookieContainer = cook;
req.UserAgent = user_agent;
if (method == "POST")
{
req.ContentType = WebConstants.ContentType;
req.ContentLength = options.Length;
Console.WriteLine(options);
StreamWriter sw = new StreamWriter(req.GetRequestStream());
sw.Write(options);
sw.Close();
}
HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
Console.WriteLine(req.HaveResponse);
StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding(1251));
string result = sr.ReadToEnd();
sr.Close();
cook = req.CookieContainer;
return result;
}
}
}
запускаю я его просто:
Код:
namespace Debug
{
class Program
{
static void Main(string[] args)
{
WebSession sess = new WebSession("http://heroeswm.ru");
string res = sess.SendRequest("", "GET", "");
Console.WriteLine(res);
}
}
}
На с# пишу недавно, очень прошу разобраться, приму любую критику))
|
|
|
22.12.2011, 19:01
|
#2
|
|
|
|
Разведчик
|
![](/zhyk/misc/regist.png) Регистрация: 14.07.2011
![](/zhyk/misc/messages.png) Сообщений: 27
![](/zhyk/misc/reput.png) Популярность: 244
![](/zhyk/misc/thnx.png) Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
|
Re: с# HttpWebRequest
Если "рандомная хрень" приходит только с этого узла, то имеет смысл посмотреть что шлет сервер тебе при первом коннекте, а именно проглядеть заголовки, куки в частности.
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
|
|
|
22.12.2011, 19:18
|
#3
|
|
|
|
Разведчик
|
![](/zhyk/misc/regist.png) Регистрация: 31.08.2010
![](/zhyk/misc/messages.png) Сообщений: 32
![](/zhyk/misc/reput.png) Популярность: 12
![](/zhyk/misc/thnx.png) Сказал(а) спасибо: 40
Поблагодарили 1 раз в 1 сообщении
|
Re: с# HttpWebRequest
Возможно я непонятно выразился: Сама программа состоит только из посылки GET запроса и вывода ответа на экран. Первый запуск программы - получаю адекватный ответ. Второй запуск - тоже адекватный ответ. Все последние - несусветная фигня. Куукисы я сохраняю и прикрепляю к запросам. По сути, последующие запуски от первого зависеть не должны. Может, на стороне сервера защита от ботов?) Сталкивался кто нибудь, и может знает как это решить?)))
Добавлено через 22 часа 36 минут
В общем ответ я нашёл, но довольно странный: если заполнить поле Host у HttpWebReqwest, то всё работает как по маслу. Вот только заполнять надо не "heroeswm.ru", как нам подсказывает здравый смысл, а каким то другим сайтом.
Последний раз редактировалось God_of_dark; 23.12.2011 в 17:55.
Причина: Добавлено сообщение
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 10:56.
|
![](/zhyk/misc/sp.gif) |