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:
How to Iterate Over a Stream With Indices
JUnit5 Programmatic Extension Registration with @RegisterExtension
Java Scanner hasNext() vs. hasNextLine()
Apache Tiles Integration with Spring MVC
Java Program to Perform integer Partition for a Specific Case
Java Program to Create the Prufer Code for a Tree
Spring’s RequestBody and ResponseBody Annotations
Hướng dẫn Java Design Pattern – Template Method
Java Program to Perform Left Rotation on a Binary Search Tree
Spring Security 5 for Reactive Applications
Updating your Password
Java Program to Implement Extended Euclid Algorithm
Java Program to Implement Floyd-Warshall Algorithm
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Các nguyên lý thiết kế hướng đối tượng – SOLID
@Before vs @BeforeClass vs @BeforeEach vs @BeforeAll
Java Concurrency Interview Questions and Answers
Java Multi-line String
Convert Hex to ASCII in Java
Introduction to Spring Cloud Netflix – Eureka
Java Program to Implement Flood Fill Algorithm
Spring Cloud – Adding Angular
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Immutable ArrayList in Java
Java Program to Implement Miller Rabin Primality Test Algorithm
Hướng dẫn Java Design Pattern – Observer
Guide to DelayQueue
Tránh lỗi NullPointerException trong Java như thế nào?
So sánh HashMap và HashSet trong Java
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
Java Program to Perform Preorder Non-Recursive Traversal of a Given Binary Tree
A Guide to the finalize Method in Java