Fake a form submission with C# WebClient

后端 未结 6 1038
谎友^
谎友^ 2020-11-30 14:40

I need to call a web and retrieve the resulting data from the model in my asp.net mvc application. When accessed on the web, the form looks like this:



        
相关标签:
6条回答
  • 2020-11-30 14:57

    I just used this: http://www.eggheadcafe.com/community/aspnet/2/69261/you-can-use-the-webclient.aspx

    0 讨论(0)
  • 2020-11-30 14:59

    Another option is the Lightweight Test Automation Framework by Microsoft <- Here Steve Sanderson applies it to MVC.


    (source: codeville.net)


    (source: codeville.net)

    0 讨论(0)
  • 2020-11-30 15:03

    These things have a habit of becoming more and more complex, for example should you need to handle cookies, authentication or multipart form uploads for uploading files etc. I suggest using curl (http://sourceforge.net/projects/libcurl-net/)

    0 讨论(0)
  • 2020-11-30 15:07

    Agreeing with @wentbackward, WatiN is another alternative.

    0 讨论(0)
  • 2020-11-30 15:21

    Something like this:

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
    req.Method = "POST";
    req.ContentType = "application/x-www-form-urlencoded";
    string data = "&p=" + dataThatNeedsToBeInTextArea;
    byte[] byteArray = Encoding.UTF8.GetBytes (data);
    req.ContentLength = byteArray.Length;
    Stream stream= req.GetRequestStream ();
    stream.Write (byteArray, 0, byteArray.Length);
    stream.Close ();
    StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
    string response = streamIn.ReadToEnd();
    streamIn .Close(); 
    
    0 讨论(0)
  • 2020-11-30 15:23

    You create a Stream and pass it into your HttpWebRequest.

    // Create a request using a URL that can receive a post. 
    WebRequest request = 
        WebRequest.Create("http://www.contoso.com/PostAccepter.aspx ");
    // Set the Method property of the request to POST.
    request.Method = "POST";
    
    // Create POST data and convert it to a byte array.
    string postData = "p=Some text here from the textarea";
    
    byte[] byteArray = Encoding.UTF8.GetBytes (postData);
    // Set the ContentType property of the WebRequest.
    request.ContentType = "application/x-www-form-urlencoded";
    // Set the ContentLength property of the WebRequest.
    request.ContentLength = byteArray.Length;
    // Get the request stream.
    Stream dataStream = request.GetRequestStream ();
    // Write the data to the request stream.
    dataStream.Write (byteArray, 0, byteArray.Length);
    // Close the Stream object.
    dataStream.Close ();
    // Get the response.
    WebResponse response = request.GetResponse ();
    // Display the status.
    Console.WriteLine (((HttpWebResponse)response).StatusDescription);
    // Get the stream containing content returned by the server.
    dataStream = response.GetResponseStream ();
    // Open the stream using a StreamReader for easy access.
    StreamReader reader = new StreamReader (dataStream);
    // Read the content.
    string responseFromServer = reader.ReadToEnd ();
    // Display the content.
    Console.WriteLine (responseFromServer);
    // Clean up the streams.
    reader.Close ();
    dataStream.Close ();
    response.Close ();
    

    http://msdn.microsoft.com/en-us/library/debx8sh9.aspx

    0 讨论(0)
提交回复
热议问题