Как мне выполнить простой запрос GET с куки в C # - PullRequest
2 голосов
/ 06 марта 2012

Все, что я нахожу, относится либо к запросу POST, либо к файлам cookie не принимаются.

У меня есть такой URL-адрес:

http://page.com/find/1,1,1,find.html?advanced=1&param1=val1&param2[]=val2

При вводе в браузер это указывает мнена страницу результатов поиска.Теперь я хотел бы повторить это в программе на C #.Пока у меня есть это:

WebRequest req = WebRequest.Create(url);
((HttpWebRequest)req).UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2";
req.Method = "GET";
WebResponse response = req.GetResponse();

Когда я запускаю его, он возвращает страницу «Пожалуйста, войдите», как и ожидалось.Но есть проблема с одним из параметров.Это ответный URL:

http://page.com/login.html?ref=find/1,1,1,find.html?advanced=1&param1=val1&param2=Array

Итак, два вопроса: что могло случиться с param2?И как мне добавить к этому куки?

РЕДАКТИРОВАТЬ: удалось установить куки, приведя к HttpWebRequest.

Ответы [ 3 ]

1 голос
/ 06 марта 2012

Как и devio , вы должны использовать HttpWebRequest. Я сделал грязный тест, чтобы проверить это.

Подготовить куки для отправки. Я сделал доступным для всего localhost:

HttpWebRequest rq = (HttpWebRequest)WebRequest.Create("http://localhost/test.php");
rq.CookieContainer = new CookieContainer();
rq.CookieContainer.Add(new Cookie("test", "xxxx", "/", "localhost"));

Ваш скрипт должен устанавливать куки, чтобы сделать их доступными в ответ. И вы могли бы использовать их.

HttpWebResponse resp = (HttpWebResponse)rq.GetResponse();
foreach(var c in resp.Cookies)
{
    Debug("{0}: {1}", c.Name, c.Value);
}
0 голосов
/ 27 августа 2018

Вы можете использовать этот код:

Cookie SessionCookie = new Cookie("{CookieName}", {Cookievalue})
{
    Domain = "{domain you want to hit}", Path = "/", Expired = false, HttpOnly = true 
};

CookieContainer SessionCookieHolder = new CookieContainer();

SessionCookie.Add(SessionCookie);

try
{
   HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("{URL}");
   WebReq.CookieContainer = SessionCookie;
   WebReq.Method = "GET/POST/HEAD"; //depending on the request type//
   WebReq.KeepAlive = true;
   HttpWebResponse Resp = (HttpWebResponse)WebReq.GetResponse();
}

catch(Exception ex)

{
   string ExceptionReader = ex.Message;
}
0 голосов
/ 06 марта 2012

Файлы cookie хранятся в свойствах HttpWebRequest.CookieContainer и HttpWebResponse.Cookies .

Для последующих запросов вам необходимо добавить файлы cookie ответа в файл cookie запроса.контейнер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...