| CS 455/555 - Intro to Networks and Communication
Spring 2011: Tues/Thurs 9:30-10:45am, Spong 108 |
|
Staff
|
Program 3: HTTP Request Capture and HTTP ClientAssigned: Thursday, March 22, 2011 DescriptionThe goal of this assignment is to help you become familiar HTTP requests and HTTP responses. We'll be implementing an HTTP request capture program so that you can look at requests generated by your favorite web browser and a simple HTTP client so that you can practice building valid HTTP requests and processing HTTP responses from real web servers. Note that the two programs that you are writing (HTTP Request Capture and HTTP Client) are totally independent. HTTP Request CaptureUse your HTTP Request Capture program with a web browser. Setup your capture program as a server on a CS Unix machine. Use the hostname and port where you are running your capture program in the URL you type in your browser. For example, if you are running your capture program on vega port 10010, use something like http://vega:10010/my/url/ or http://vega.cs.odu.edu:10010/. The path doesn't matter because your capture program is not actually serving pages. There is no need to change any proxy settings on your browser. Clarification (3/28/11): The HTTP request capture program should remain running until the user closes it with Ctrl-C. The program should close the client socket after each request has been received, but leave the welcoming/listening socket open.
Example: 128.82.4.98:63307
Example: http://vega.cs.odu.edu:10500/my/url/
Hints:
HTTP ClientUse the HTTP client to request data from a web server. Your client should be able to send requests and receive responses from any web server on the Internet. There is no need to write a server program to communicate with this client.
Note: Print the actual string sent to the server. Do not send a request and then re-type the request for output.
Rules
TestingA large part of your program's grade will be determined by how well it handles a set of inputs. You should test your program rigorously before submitting. Because your programs will be run and tested using a script, you must format your output exactly as I have described or you will lose points. The examples below are just examples. I will test your programs rigorously. In particular, I will test your HTTP Client on a wide range of URLs. Example 1 java HTTPReqCap Usage: java HTTPReqCap port Example 2 antares> java HTTPReqCap 10003 128.82.4.118:33083 GET /my/url HTTP/1.1 Host: antares.cs.odu.edu:10003 User-Agent: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.7) Gecko/20070606 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Note that after setting up the server, the user opened a web browser to the URL Example 3 java HTTPClient Usage: java HTTPClient URL Example 4 java HTTPClient http://www.cs.odu.edu/~mweigle/files/foo.txt HEAD /~mweigle/files/foo.txt HTTP/1.0 Host: www.cs.odu.edu User-agent: ODU-CS455/555 200 Apache/2.2.0 Sat, 16 Sep 2006 17:38:59 GMT 95 HTTP/1.1 200 OK Date: Thu, 19 Feb 2009 20:54:19 GMT Server: Apache/2.2.0 Last-Modified: Sat, 16 Sep 2006 17:38:59 GMT ETag: "7ab46d-5f-9da4d2c0" Accept-Ranges: bytes Content-Length: 95 Connection: close Content-Type: text/plain SubmissionYou must name your source files HTTPReqCap.java and HTTPClient.java (note the capitalization). Make sure that you submit all files necessary to compile your program. But, do not submit compiled files (.class files). Directions for submitting your assignment through Blackboard |