我正在尝试使用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
- __视图状态
- __视图状态生成器
- __事件验证
调试一下,如果我只发送前两个的值,那么我会得到与您描述的类似的响应。但是,如果我发送所有六个值,我就会得到您期望的响应。
看来您的流程应该包括几个步骤:
- 向URL发出GET请求
- 解析服务器期望返回的其他表单值(除了
Text1
和Text2
之外的所有内容) - 在POST请求中包括这4个额外的密钥/值对
基本上,这个网站似乎使用隐藏的表单值来"验证"POST请求,确保它来自对页面的有效使用,而不是自动请求。(基本上,为了让稍微难一点去做你想做的事情。)你必须首先发出GET请求来获取这些值,并在POST请求中使用它们。