post data through httpWebRequest

前端 未结 5 1255
情话喂你
情话喂你 2020-12-08 22:42

I need to \"Post\" some data to an external website using HttpWebRequest object from my application(desktop) and get a response back into my application through

相关标签:
5条回答
  • 2020-12-08 23:13

    It looks like you will have to get the page with a HttpWebRequest and parse the content of the corresponding HttpWebResponse to find out the names of text boxes. Then you submit the values to the page by using another HttpWebRequest.

    So basically, what you need to do is the following:

    1. Issue a HttpWebRequest with GET method to the URL where the page with text boxes is located
    2. Get the response stream of the HttpWebResponse
    3. Parse the page contained in the response stream and get the names of text boxes. You can use HTML Agility Pack for this purpose.
    4. Issue a HttpWebRequest with POST method, with content type set to "application/x-www-form-urlencoded" and key-value pairs as the content.
    0 讨论(0)
  • 2020-12-08 23:18
    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");
    }
    
    0 讨论(0)
  • 2020-12-08 23:22

    I use this function to post data. But the url you pass has to be formatted as such for example

    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
    
    0 讨论(0)
  • 2020-12-08 23:27

    First part of your problem: Maybe the HTML tree is stable. Then you can find your way to the textbox of your interrest with XPath. Use XmlReader, XDocument and Linq to go throught it.

    0 讨论(0)
  • 2020-12-08 23:37

    You could et those names by XPath e.g. and user them like:

    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();
    
    0 讨论(0)
提交回复
热议问题