HTTP and Java
-
Upload
emma-harvey -
Category
Documents
-
view
23 -
download
0
description
Transcript of HTTP and Java
HTTP and Java
Background
• TCP/IP– Break message into packets– Give each packet a number and total number of packets in
message– Destination IP address and port numbers– Source IP address and port
• IP Address (v4 and v6)• Port Number (0 to 216-1)– Well Know (0-1023)– Registered (1024-49151)– Dynamic, private, ephemeral (all the rest)
Sockets
• Internet Sockets– Listener or Server Socket– Client Sockets– Two way connection provides two way communication
• Operating specific means of– Opening– Closing– Transmitting to and from a “socket”
• Often uses a protocol like TCP/IP• In Java it is viewed as a stream
Hypertext Transfer Protocol
• Application level– Provides communication between applications
• Usually a client and server (though it may be peer-to-peer)
– Underlying transport layer is TCP/IP• Request-Response Protocol• Used for sending and receiving various types of
information– Used in web-applications especially in HTML-based
applications
High-level View
• An HTTP Session– Client establishes a TCP connection to a particular
port (e.g. port 80)– Server waits for message from Client– Upon receipt the server sends back a • Status (e.g. ok)• Response
– Requested Information– Error Message– Or it could be empty
Message Types:HTTP Request
• Request Line– GET or POST with pathToResource
• Header Lines– Header Name – Value Pairs• Example Names: From:, User-Agent:
• Blank Line• Optional Message Body– Gets don’t have a Message Body– For example: XML Encoded information in a POST
Message TypesHTTP Response
• Status Line– For example:
• HTTP/1.0 200 OK• HTTP/1.0 404 Not Found
• Header Lines– Header Name – Value Pairs– Example Names: Server:, Last-Modified:
• Blank Line• Optional Message Body
– Examples• HTML• XML Encoded Information is a response expected• Could be blank for a pure “POST”
Request Methods
• GET– Should be used to retrieve information, not modify
information on the server• Not enforced and some gets don’t conform to this
suggestion, can cause problems
– Encodes parameters in URL sent to server• Appears in the request line (the first line)• Server may have URL length limits (e.g. 2083 characters)
Request Methods
• POST– Should be used to change information– Information sent in message body• Can be any format (including binary)• We will use XML• Is of arbitrary size
HTTP And Java
• Several “HTTP” servers written in Java– Jetty– Apache– Oracle HTTPServer• Built into Oracle’s Java 1.6 and 1.7• Import com.sun.net.httpserver.*;• We will use this one
HttpServer Code• HttpServer server;• HTTPServer.create(
new InetSocketAddress(portNumber), maxNumberOfConnections);• server.setExecutor(null);
– Default thread pool manager• server.createContext(URLSuffix, handlerMethodObject)
– Handler for various suffixes in the URL– Handler “method” is a Command object that extends HttpHandler
• HttpHandler has one method: void handle(HttpExchange exchange)
• Often the handler is declared as an instance of an anonymous inner type that overrides the “void handle(HttpExchange exchange)” method
• server.start()
HttpExchange Code• An HttpExchange encapsulates an HTTP request received and a response to be generated in one
exchange.• exchange.sendResponseHeaders(int rCode, responseLength)
– rCode is often a constant found in HttpURLConnection• Examples
– HttpURLConnection.HTTP_INTERNAL_ERROR– HttpURLConnection.HTTP_OK,
– responseLength• 0 means an arbitrary size• -1 means no response body
• exchange.getRequestBody();– Gets the body of the request as an input stream– Used as a parameter to xmlStream.fromXML(exchange.getRequestBody());
• exchange.getResponseBody();– Gets the body of the request as an input stream– Used as a parameter to xmlStream.toXML(object, exchange.getResponseBody());