如何使用webrequest阅读响应

时间:2017-11-08 14:06:14

标签: vb.net httpwebrequest

我尝试使用WebRequest从页面获取响应。

但我的代码只返回没有我的值的源代码。

代码:

Dim request As HttpWebRequest
request = WebRequest.Create("http://www.jigar.net/demo/httprequestdemoclient.aspx")
Dim postData As String = "text1=hello"
Dim data As Byte() = Encoding.ASCII.GetBytes(postData)
request.KeepAlive = True
request.Method = WebRequestMethods.Http.Post
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = data.Length
Using stream As Stream = request.GetRequestStream()
stream.Write(data, 0, data.Length)
End Using
Dim response As WebResponse = request.GetResponse()
Dim responseString As String = New StreamReader(response.GetResponseStream()).ReadToEnd()
MsgBox(responseString)

我做错了什么?感谢

1 个答案:

答案 0 :(得分:0)

在您使用的链接上有更多表单字段。你正在发送一个,但我算六:

  • 文本1
  • 文本2
  • ctl01
  • __ VIEWSTATE
  • __ VIEWSTATEGENERATOR
  • __ EVENTVALIDATION

稍微调试一下,如果我只发送前两个的值,那么我会得到类似于你描述的响应。但是,如果我发送所有六个值,我会收到您期待的回复。

您的流程似乎需要执行以下几个步骤:

  1. 向网址发送GET请求
  2. 解析服务器希望返回的其他表单值(除Text1Text2以外的所有内容)
  3. 在POST请求中包含这4个额外的键/值对
  4. 基本上,这个网站似乎使用隐藏的表格值来验证" POST请求,确保它来自有效使用页面而不是自动请求。 (基本上,要使稍微努力完全按照您尝试的方式执行操作。)您必须首先发出GET请求才能获取这些值并在您的POST请求。