Как выполнить GET- или POST-запрос из C# кода?
Запрос к web-странице из C# кода
2
Спросил
Лучший ответ:
3
Пример POST запроса:
var request = (HttpWebRequest) HttpWebRequest.Create("http://url");
request.Method = "POST";
const string command = @"Текст POST запроса";
byte[] bytes = Encoding.ASCII.GetBytes(command);
request.ContentLength = bytes.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(bytes, 0, bytes.Length);
}
using(var stream = new StreamReader(request.GetResponse().GetResponseStream()))
{
Console.WriteLine(stream.ReadToEnd());
}
Новые ответы
2
Нужно использовать статические методы класса WebRequest:
var request = WebRequest.Create("host");
var stream = request.GetResponse().GetResponseStream();
var content = new StreamReader(stream).ReadToEnd();
Console.WriteLine(content);
Console.ReadLine();
Можно использовать прокси:
WebProxy proxy = new WebProxy("proxy",80);
proxy.BypassProxyOnLocal = true;
request.Proxy = proxy;
Если сервер возвращает в качестве кодов состояния 301 или 302 (или любой другой код перенаправления 30x), то автоматически будет произведен запрос на адрес перенаправления. Если такое поведение не является желательным, нужно установить в false
свойство AllowAutoRedirect
объекта HttpWebRequest
. При этом придется сделать явное преобразование объекта, возвращаемого методом WebRequest.Create
, к классу HttpWebRequest
:
var request = (HttpWebRequest) WebRequest.Create("host");
request.AllowAutoRedirect = false;