Отправка HTTP POST с помощью System.Net.WebClient
Можно ли отправлять HTTP POST с данными какой-либо формы с помощью System.Net.WebClient?
Если нет, есть ли другая библиотека, такая как WebClient, которая может выполнять HTTP POST? Я знаю, что могу использовать System.Net.HttpWebRequest, но я ищу что-то, что не так много.
Надеюсь, он будет выглядеть следующим образом:
Using client As New TheHTTPLib
client.FormData("parm1") = "somevalue"
result = client.DownloadString(someurl, Method.POST)
End Using
Ответы
Ответ 1
Основываясь на ответе @carlosfigueira, я более подробно рассмотрел методы WebClient и нашел UploadValues , что именно то, что я хочу:
Using client As New Net.WebClient
Dim reqparm As New Specialized.NameValueCollection
reqparm.Add("param1", "somevalue")
reqparm.Add("param2", "othervalue")
Dim responsebytes = client.UploadValues(someurl, "POST", reqparm)
Dim responsebody = (New Text.UTF8Encoding).GetString(responsebytes)
End Using
Ключевой частью является следующее:
client.UploadValues(someurl, "POST", reqparm)
Он отправляет какой-либо глагол, который я ввожу, и он также помогает мне создать правильные данные формы, закодированные в url, мне просто нужно предоставить параметры как имя_вычисления.
Ответ 2
WebClient
не имеет прямой поддержки данных формы, но вы можете отправить сообщение HTTP с помощью метода UploadString:
Using client as new WebClient
result = client.UploadString(someurl, "param1=somevalue¶m2=othervalue")
End Using
Ответ 3
Что касается http-глагола, то WebRequest
может быть проще. Вы можете пойти на что-то вроде:
WebRequest r = WebRequest.Create("http://some.url");
r.Method = "POST";
using (var s = r.GetResponse().GetResponseStream())
{
using (var reader = new StreamReader(r, FileMode.Open))
{
var content = reader.ReadToEnd();
}
}
Очевидно, в этом отсутствует обработка исключений и запись тела запроса (для которого вы можете использовать r.GetRequestStream()
и писать его как обычный поток, но я надеюсь, что это может помочь.