tags:

views:

76

answers:

4

I'm not familiar with http stuff, but how would I be able to submit data to a website? There is a submit button that I would like to "press" from a console app. This is not my own website.

This is part of the page source, not sure if it has any relevance:

<form action="rate.php" method="post">

I looked at the HttpWebRequest class but I am unfamiliar with what properties I need to fill in.

Sorry I'm so vague but I'm not familiar with http.

A: 

you can take a look at codeproject HttpWebRequest/Response in a nutshell - Part 1

volody
A: 
Response.Write("hello!");
Response.End();
jason
+3  A: 

Here is a c/p from MSDN.

    // 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 = "This is a test that posts this string to a Web server.";
    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 ();

link to page

The process is pretty easy but you need to first figure out what you need to send and any other special encoding/cookies/etc... that might be needed. I suggest you use Fiddler and/or Firebug for Firefox. One you can see everything taking place in a working request via the web page, then you can mimic the same behavior in your app.

Zachary
-1 for not having using statements in the code - whether or not it comes from MSDN.
John Saunders
@John: omitting using statements is a common practice. Save your downvotes for truly misleading content please. The author of this answer should not be punished for trying to help.
Wim Coenen
@Wim: I don't recall the last time I did something because you told me to. Oh, wait: never happened.
John Saunders
@Wim: it's a common practice that leads newer developers to leak resources, in conjunction with the additional common practice of bad exception handling. I save my downvotes for anyone who enables cut-and-paste developers to start with bad habits.
John Saunders
@John: 1) I'm not telling you what to do, I was suggesting and used the word "please" 2) I thought you were talking about using statements at the top of the sample, such as "using system.IO;". I'm all for deterministic disposal.
Wim Coenen
@John, I agree with Wim, it does beget a comment, but a down-vote is overkill IMHO
Mikos
@Mikos: your opinion is welcome. When the code changes to implement `using` correctly, then I will remove the downvote. This tends to produce answers that correctly implement `using`.
John Saunders
@John, you are beginning to sound too much like a code-Nazi! How about responder's encapsulation of the class? or how about the naming convention? or...what else....you know what i mean... where do you draw the line? I was in agreement with you earlier, now feel you are being a code-Nazi.
Mikos
@Mikos: none of the other issues you describe cause resource leaks.
John Saunders
A: 

A flexible and easy to use example can be found here: C# File Upload with form fields, cookies and headers

Sky Sanders