如何使用webrequest读取响应



我正在尝试使用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
  • 文本2
  • ctl01
  • __视图状态
  • __视图状态生成器
  • __事件验证

调试一下,如果我只发送前两个的值,那么我会得到与您描述的类似的响应。但是,如果我发送所有六个值,我就会得到您期望的响应。

看来您的流程应该包括几个步骤:

  1. 向URL发出GET请求
  2. 解析服务器期望返回的其他表单值(除了Text1Text2之外的所有内容)
  3. 在POST请求中包括这4个额外的密钥/值对

基本上,这个网站似乎使用隐藏的表单值来"验证"POST请求,确保它来自对页面的有效使用,而不是自动请求。(基本上,为了让稍微难一点去做你想做的事情。)你必须首先发出GET请求来获取这些值,并在POST请求中使用它们。

相关内容

  • 没有找到相关文章

最新更新