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发出HttpWebRequest with GET方法
  • 获取HttpWebResponse的响应流
  • 解析响应流中包含的页面并获取文本框的名称。您可以为此目的使用
  • 使用POST方法发出HttpWebRequest,内容类型设置为“application/x-www-form-urlencoded”,键值对作为内容

  • 我使用这个函数发布数据。但是你传递的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