我需要使用一些数据“发布”到外部网站
来自我的应用程序(桌面)的HttpWebRequest
对象并获得响应
通过HttpWebResponse
对象返回我的应用程序。
但是我发布数据的网页上有带动态名称的文本框。
如何获取这些文本框的名称并在HttpWebResquest
中发布数据?
例如,当我加载页面时,文本框名称就像这个U2FsdGVkX183MTQyNzE0MrhLOmUpqd3eL60xF19RmCwLlSiG5nC1H6wvtBDhjI3uM1krX_B8Fwc
,但当我刷新页面名称时,更改为此U2FsdGVkX182MjMwNjIzMPAtotst_q9PP9TETomXB453Mq3M3ZY5HQt70ZeyxbRb118Y8GQbgP8
。
感谢您的任何建议。
答案 0 :(得分:30)
var request = WebRequest.Create("http://foo");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write("field=value");
}
答案 1 :(得分:9)
您可以通过XPath来识别这些名称,例如:用户喜欢:
byte[] data = new ASCIIEncoding().GetBytes("textBoxName1=blabla");
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost/myservlet");
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
httpWebRequest.ContentLength = data.Length;
Stream myStream = httpWebRequest.GetRequestStream();
myStream.Write(data,0,data.Length);
myStream.Close();
答案 2 :(得分:2)
看起来您必须使用HttpWebRequest获取页面并解析相应HttpWebResponse的内容以找出文本框的名称。然后使用另一个HttpWebRequest将值提交给页面。
基本上,你需要做的是以下几点:
答案 3 :(得分:0)
我使用此功能发布数据。但是您传递的网址必须格式化为例如
http://example.com/login.php?userid=myid&password=somepassword
Private Function GetHtmlFromUrl(ByVal url As String) As String
If url.ToString() = vbNullString Then
Throw New ArgumentNullException("url", "Parameter is null or empty")
End If
Dim html As String = vbNullString
Dim request As HttpWebRequest = WebRequest.Create(url)
request.ContentType = "Content-Type: application/x-www-form-urlencoded"
request.Method = "POST"
Try
Dim response As HttpWebResponse = request.GetResponse()
Dim reader As StreamReader = New StreamReader(response.GetResponseStream())
html = Trim$(reader.ReadToEnd)
GetHtmlFromUrl = html
Catch ex As WebException
GetHtmlFromUrl = ex.Message
End Try
End Function
答案 4 :(得分:0)
问题的第一部分: 也许HTML树是稳定的。然后你就可以通过XPath找到你的interrest文本框了。 使用XmlReader,XDocument和Linq来完成它。