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 – Reader to InputStream
Spring Boot - Tomcat Deployment
Java Program to Generate Random Hexadecimal Byte
How to Read HTTP Headers in Spring REST Controllers
Java Program to Implement Bellman-Ford Algorithm
Lập trình mạng với java
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Spring Boot - Eureka Server
Lập trình hướng đối tượng (OOPs) trong java
Immutable Map Implementations in Java
A Guide to BitSet in Java
The “final” Keyword in Java
Debugging Reactive Streams in Java
Converting a List to String in Java
Hướng dẫn Java Design Pattern – Prototype
Java Program to Implement Singly Linked List
Java Program to Implement Ternary Search Tree
Anonymous Classes in Java
Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?
Java Program to Compute Discrete Fourier Transform Using the Fast Fourier Transform Approach
Java Program to Construct an Expression Tree for an Prefix Expression
Consuming RESTful Web Services
Using a Spring Cloud App Starter
Check If a String Is Numeric in Java
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Guide to CountDownLatch in Java
Java Program to Implement Circular Doubly Linked List
Spring Security Custom AuthenticationFailureHandler
Hướng dẫn Java Design Pattern – Service Locator
Guide to Selenium with JUnit / TestNG
Phương thức tham chiếu trong Java 8 – Method References
Hướng dẫn Java Design Pattern – Singleton