2013-09-19 2 views
2

Вот мой код, используя HttpWebRequest, чтобы автоматически заполнить веб-форму и отправить ее.Альтернативный способ HttpWebRequest VB.net с использованием метода POST

  Dim cweb As String = "http://www.yellowpages.com/novato-ca/mip/creative-memories-consultant-senior-director-461725587/send_email?lid=171673036" 
      Dim POST As String = "&email%5Bto_address%[email protected]&email%5Bfrom_name%5D=Test Name&email%5Bfrom_address%[email protected]&email%5Bnote%5D=Hello There"  

      Dim request As HttpWebRequest 
      Dim response As HttpWebResponse 

      request = CType(WebRequest.Create(cweb), HttpWebRequest) 
      request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36" 
      request.AllowAutoRedirect = True 
      request.ContentType = "application/x-www-form-urlencoded" 
      request.ContentLength = POST.Length 
      request.Method = "POST" 
      request.KeepAlive = True 

      Dim requestStream As Stream = request.GetRequestStream() 
      Dim postBytes As Byte() = Encoding.ASCII.GetBytes(POST) 
      requestStream.Write(postBytes, 0, postBytes.Length) 
      requestStream.Close() 

      response = CType(request.GetResponse(), HttpWebResponse) 
      response.Close() 

В этом коде я использовал форму отправки желтых страниц в качестве примера. Да, это позволяет мне заполнять и подавать, но мне нужны другие альтернативы. Есть ли другие альтернативы помимо WebClient, поскольку я уже пробовал это, чтобы отправлять запросы POST? Я прочитал о разделах, касающихся System.Net.Sockets, которые он может отправить запрос POST, но я не знаю, с чего начать. Любые советы будут с радостью приняты. Я действительно нахожу HttpWebRequest и WebClient abit медленным при отправке запросов POST.

+0

Как вы еще не пробовали какие-либо другие способы сделать это до сих пор, я должен спросить: вы нашли '' HttpWebRequest' и WebClient' немного медленно по сравнению с чем? Вы правы, что вы можете использовать сокеты для отправки HTTP POST. Вы можете использовать их для отправки почти любых сетевых сообщений, поскольку они являются инфраструктурой связи, которая основывается на таких вещах, как «HttpWebRequest». Нет никакой гарантии, что запуск ваших собственных HTTP-классов ускорит процесс. – Adrian

+0

Я хотел знать, как отправлять HTTP POST с помощью сокетов, но я не знаю с чего начать. Я сбиваю с толку, как отправлять POST-запросы с помощью сокетов. Большинство примеров, которые я прочитал, находятся в автономном режиме, когда сервер и клиент находятся в одной программе, только я не могу реализовать на основе моего кода HttpWebRequest выше. –

+1

Я все еще не понимаю, почему у вас проблемы с «HttpWebRequest» и «WebClient». Это цель, для которой они созданы, и вы просто изобретаете колесо, если используете .Net Sockets, чтобы существенно переписать куски их функциональности. Тем не менее, быстрый Google приводит меня ко многим ответам на ваш запрос, некоторые из них прямо здесь, в StackOverflow. Я бы посоветовал вам сделать еще немного исследований, а затем вернуться и задать конкретные вопросы о вещах, которые вы не понимаете. Начните с Googling «как отправить HTTP-запрос с использованием .Net-сокетов». Это сработало для меня. – Adrian

ответ

2

Привет, вы можете попробовать использовать этот способ

Using sendto As New Net.WebClient 
    Dim param As New Specialized.NameValueCollection 
    param.Add("param1", "value1") 
    param.Add("param2", "value2") 
    Dim response_bytes = sendto.UploadValues(yourUrl, "POST", param) 
    Dim response_body = (New Text.UTF8Encoding).GetString(response_bytes) 
End Using 
+0

«Основное соединение было закрыто: произошла непредвиденная ошибка при отправке». – PoloHoleSet

Смежные вопросы