|
|||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||
|
Announcements
Want a new Job?
Chapters
Services
Feature Zones
|
Note: This is an unedited contribution. If this article is inappropriate,
needs attention or copies someone else's work without reference then please
Report This Article
IntroductionHttpWebRequest/Response. You read much of it, yet many tutorials, explainations, etc... are quite difficult. I'll try to explain the basics of HttpWebRequest/Response here, setting you off towards more advanced code with Http- usage. This article is mostly intended to be read by beginning C# coders. Intermediate users might be able to use this as a small reference to some functions though. I'll try to do things structured. The codeNow, up to the code. In HttpWebRequest/Response, we have several functions, properties. These are the ones that will be explained here:
Now, up to some code. using System; using System.Collections.Generic; using System.Net; using System.IO; using System.Text; It's in the System.Net the HttpWeb- functions are found in. Now, in your class, create a function (here it is start-post()). This function is (for now) void, and has no parameters, for we want to keep things simple in the beginning. If you find this too easy, you can always jump to parameters and return values immediatelly. private static void start_post() { //Our postvars byte[] buffer = Encoding.ASCII.GetBytes( "test=postvar&test2=another" ); //Initialisation, we use localhost, change if appliable HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("http://127.0.0.1/test.php"); //Our method is post, otherwise the buffer (postvars) would be useless WebReq.Method = "POST"; //We use form contentType, for the postvars. WebReq.ContentType ="application/x-www-form-urlencoded"; //The length of the buffer (postvars) is used as contentlength. WebReq.ContentLength = buffer.Length; //We open a stream for writing the postvars Stream PostData = WebReq.GetRequestStream(); //Now we write, and afterwards, we close. Closing is always important! PostData.Write(buffer, 0, buffer.Length); PostData.Close(); //Get the response handle, we have no true response yet! HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse(); //Let's show some information about the response Console.WriteLine(WebResp.StatusCode); Console.WriteLine(WebResp.Server); //Now, we read the response (the string), and output it. Stream Answer = WebResp.GetResponseStream(); StreamReader _Answer = new StreamReader(Answer); Console.WriteLine(_Answer.ReadToEnd()); //Congratulations, you just requested your first POST page, you //can now start logging into most login forms, with your application //Or other examples. } Now, this was simple, wasn't it? private static void start_get() { //Our getVars, to test the get of our php. We can get a page without any of these vars too though. string getVars = "?var1=test1&var2=test2"; //Initialisation, we use localhost, change if appliable HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(string.Format("http://127.0.0.1/test.php{0}", getVars)); //This time, our method is GET. WebReq.Method = "GET"; //From here on, it's all the same as above. HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse(); //Let's show some information about the response Console.WriteLine(WebResp.StatusCode); Console.WriteLine(WebResp.Server); //Now, we read the response (the string), and output it. Stream Answer = WebResp.GetResponseStream(); StreamReader _Answer = new StreamReader(Answer); Console.WriteLine(_Answer.ReadToEnd()); //Congratulations, with these two functions in basic form, you just learned //the two basic forms of web surfing //This proves how easy it can be. } Again, the function is very easy... Now, since we are all demanding coders, we won't quit with these simple functions, for we will have to change the functions, recompile the code, in order to change the file we need to get. We can use command-line input though. Why don't we upgrade our code? :) using System; using System.Collections.Generic; using System.Net; using System.IO; using System.Text; namespace HTTP { class HTTP_basics { private static void start_post(string strPage, string strBuffer) { //Our postvars byte[] buffer = Encoding.ASCII.GetBytes(strBuffer); //Initialisation HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(strPage); //Our method is post, otherwise the buffer (postvars) would be useless WebReq.Method = "POST"; //We use form contentType, for the postvars. WebReq.ContentType ="application/x-www-form-urlencoded"; //The length of the buffer (postvars) is used as contentlength. WebReq.ContentLength = buffer.Length; //We open a stream for writing the postvars Stream PostData = WebReq.GetRequestStream(); //Now we write, and afterwards, we close. Closing is always important! PostData.Write(buffer, 0, buffer.Length); PostData.Close(); //Get the response handle, we have no true response yet! HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse(); //Let's show some information about the response Console.WriteLine(WebResp.StatusCode); Console.WriteLine(WebResp.Server); //Now, we read the response (the string), and output it. Stream Answer = WebResp.GetResponseStream(); StreamReader _Answer = new StreamReader(Answer); Console.WriteLine(_Answer.ReadToEnd()); } private static void start_get(string strPage, string strVars) { //Initialisation HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(string.Format("{0}{1}", strPage, strVars)); //This time, our method is GET. WebReq.Method = "GET"; //From here on, it's all the same as above. HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse(); //Let's show some information about the response Console.WriteLine(WebResp.StatusCode); Console.WriteLine(WebResp.Server); //Now, we read the response (the string), and output it. Stream Answer = WebResp.GetResponseStream(); StreamReader _Answer = new StreamReader(Answer); Console.WriteLine(_Answer.ReadToEnd()); } public static void Main(string[] args) { while (true) { Console.WriteLine("What type? 1:Get, 2:POST"); int i = Int32.Parse(Console.ReadLine()); Console.WriteLine("What page?"); string page = Console.ReadLine(); Console.WriteLine("Vars? (ENTER for none)"); string vars = Console.ReadLine(); switch (i) { case 1: start_get(page, vars); break; case 2: start_post(page, vars); break; } } } } } So, we have a small, text-based, none-doing browser from our console. It's very rough, but it was easy, and we learned a lot! <?php print_r($_GET); //Prints all GET variables in a quite readable manner. print_r($_POST); //Prints all POST variables in a quite readable manner. ?> History** 16-03-2007 0:40 Ending of first creation, any points you'd like to see changed/improved/added, please tell me! Hope this was interesting.
|
||||||||||||||||||||||||||||||||||||