C# 通过httpWebRequest发布数据
我需要“张贴”一些数据到一个外部网站使用C# 通过httpWebRequest发布数据,c#,httpwebrequest,C#,Httpwebrequest,我需要“张贴”一些数据到一个外部网站使用 HttpWebRequest从我的应用程序(桌面)中删除对象并获取响应 通过HttpWebResponse对象返回到我的应用程序。 但是我在上面发布数据的网页有动态名称的文本框 如何获取这些文本框的名称并在HttpWebResquest中发布数据 例如,当我加载页面时,文本框名称如下u2fsdgvkx183mtqynze0mrhlomupqd3el60xf19rmcwlsig5nc1h6wvtbhji3um1krx_B8Fwc,但当我刷新页面名称时,更改
HttpWebRequest
从我的应用程序(桌面)中删除对象并获取响应
通过HttpWebResponse
对象返回到我的应用程序。
但是我在上面发布数据的网页有动态名称的文本框
如何获取这些文本框的名称并在HttpWebResquest
中发布数据
例如,当我加载页面时,文本框名称如下u2fsdgvkx183mtqynze0mrhlomupqd3el60xf19rmcwlsig5nc1h6wvtbhji3um1krx_B8Fwc
,但当我刷新页面名称时,更改为此u2fsdgvkx182mjnjizmpatost\u q9pp9tetomxb453m3m3m3zy5hqy5hqt70zeyxbrb118ygqbgp8
感谢您的建议。您可以通过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();
看起来您必须使用HttpWebRequest获取页面,并解析相应HttpWebResponse的内容以找出文本框的名称。然后使用另一个HttpWebRequest将值提交到页面 因此,基本上,您需要做以下几点:
我使用这个函数发布数据。但是你传递的url必须被格式化,例如
问题的第一部分: 也许HTML树是稳定的。然后可以使用XPath找到Interest的文本框。
使用XmlReader、XDocument和Linq进行检查。但我事先不知道字段名。这就是问题所在????字段名不是硬编码的,每当页面加载或刷新时,字段名都会更改。为此,请打开另一个问题,因为在这个问题中,字段名完全脱离主题(一般来说,并不意味着它是脱离主题的)
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");
}
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