我这里有一个使用SOCKETS的工作HTTP请求,但我不知道如何发送POST请求。
这是我的代码:
Dim hostName As String
Dim hostPort As Integer
Dim response As Integer
Dim iphe As IPHostEntry = Dns.GetHostEntry("www.yellowpages.com")
hostName = iphe.AddressList(0).ToString()
hostPort = 80
response = 0
Dim host As IPAddress = IPAddress.Parse(hostName)
Dim hostep As New IPEndPoint(host, hostPort)
Dim sock As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
sock.Connect(hostep)
Dim request = "GET /nationwide/mip/choice-hotels-international-462092189/send_email?lid=161004592 HTTP/1.1" & vbCr & vbLf &
"Host: 208.93.105.105" & vbCr & vbLf &
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36" & vbCr & vbLf &
"Connection: keep-alive" & vbCr & vbLf &
"Content-Type: application/x-www-form-urlencoded" & vbCr & vbLf &
"Content-Length: 0" & vbCr & vbLf & vbCr & vbLf
response = sock.Send(Encoding.UTF8.GetBytes(request))
response = sock.Send(Encoding.UTF8.GetBytes(vbCr & vbLf))
sock.Close()
我想在我的代码中用这些数据填写这个网络表单:
email%5Bto_address%5D=test@mail.com&email%5Bfrom_name%5D=Test Name&email%5Bfrom_address%5D=test@mail.com&email%5Bnote%5D=Hello
我该怎么办?我已使用以下代码使用HttpWebRequest成功完成了此操作:
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%5D=recipient@email.com&email%5Bfrom_name%5D=Test Name&email%5Bfrom_address%5D=sender@mail.com&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()
但我想通过使用SOCKETS重新创建这个概念。
答案 0 :(得分:0)
如果您可以使用套接字发送GET请求,那么您当然可以发送POST请求。
你必须正确格式化它。您可以检查RFC以获取整个HTTP规范。
POST样本:
Dim request = "POST /nationwide/mip/choice-hotels-international-462092189/send_email?lid=161004592 HTTP/1.1" & Environment.Newline &
"Host: 208.93.105.105" & Environment.Newline &
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36" & Environment.Newline &
"Connection: keep-alive" & Environment.Newline &
"Content-Type: application/x-www-form-urlencoded" & Environment.Newline &
"Content-Length: 22" & Environment.Newline & Environment.Newline &
"this%20is%20the%20data"