Take this example.
import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; import java.net.URLConnection; public class HttpConnect { public static void main(String[] args) throws Exception { URL url = new URL("http://www.rgagnon.com/howto.html"); URLConnection con = url.openConnection(); Reader reader = new InputStreamReader(con.getInputStream()); while (true) { int ch = reader.read(); if (ch==-1) { break; } System.out.print((char)ch); } } }
The above snippet reads the HTML page and dumps it to the console.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML><HEAD> <!-- developpe par Real Gagnon, Quebec Canada --> <LINK REL="SHORTCUT ICON" HREF="http://www.maixuanviet.com/favicon.ico"> <META NAME="description" Content="Real's JAVA JAVASCRIPT WSH and PowerBuilder How-to pages with useful code snippets"> <META NAME="keywords" Content="java,javascript,wsh,vbscript,how-to,powerbuilder"> <LINK title="mystyle" href="howto.css" type="text/css" rel="stylesheet"> ...
To trace what is going on at the HTTP protocol level, we can switch the HttpURLConnection/UrlConnection in debug mode.
You must enable the java-logging mechanism by setting a special property when starting the JVM :
java.exe -Djava.util.logging.config.file=logging.properties HttpConnect
and put in logging.properties file (by default in JRE_HOME\lib) the following property
sun.net.www.protocol.http.HttpURLConnection.level = ALL
Note :
If running from Eclipse, you put the -Djava.util.logging… via the Run configuration dialog -> Arguments Tab -> VM arguments textarea.
The result is :
2010-08-07 00:00:31 sun.net.www.protocol.http.HttpURLConnection writeRequests FIN: sun.net.www.MessageHeader@16caf435 pairs: {GET /howto.html HTTP/1.1: null}{User-Agent: Java/1.6.0_20}{Host: www.maixuanviet.com}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive} 2010-08-07 00:00:31 sun.net.www.protocol.http.HttpURLConnection getInputStream FIN: sun.net.www.MessageHeader@5ac0728 pairs: {null: HTTP/1.1 200 OK}{Date: Sat, 07 Aug 2010 04:00:33 GMT}{Server: Apache}{Accept-Ranges: bytes}{Content-Length: 17912}{Keep-Alive: timeout=5, max=64}{Connection: Keep-Alive}{Content-Type: text/html} <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML><HEAD> <!-- developpe par Real Gagnon, Quebec Canada --> <LINK REL="SHORTCUT ICON" HREF="http://www.maixuanviet.com/favicon.ico"> <META NAME="description" Content="Real's JAVA JAVASCRIPT WSH and PowerBuilder How-to pages with useful code snippets"> ...
Done! Happy Coding!
Related posts:
Java Program to Implement Expression Tree
Guide to CountDownLatch in Java
Converting Between an Array and a Set in Java
Từ khóa static và final trong java
HttpClient Timeout
Java 8 Streams peek() API
Transactions with Spring and JPA
Spring NoSuchBeanDefinitionException
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Java Program to Implement Floyd-Warshall Algorithm
Serialization và Deserialization trong java
Java Program to Perform Addition Operation Using Bitwise Operators
Mệnh đề Switch-case trong java
Java Program to Perform integer Partition for a Specific Case
Send an email using the SMTP protocol
Java Program to Compute Determinant of a Matrix
Guava CharMatcher
Java InputStream to String
Java Program to Implement TreeSet API
Java Program to Find Inverse of a Matrix
Cài đặt và sử dụng Swagger UI
Generic Constructors in Java
Java Program to Implement Hash Trie
How to Set TLS Version in Apache HttpClient
Java Program to Represent Graph Using Linked List
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Using a Mutex Object in Java
Java Timer
The XOR Operator in Java
Spring Web Annotations
Tính trừu tượng (Abstraction) trong Java
Introduction to Using Thymeleaf in Spring