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:
HttpClient Timeout
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Java Program to Find the Peak Element of an Array O(n) time (Naive Method)
Một số ký tự đặc biệt trong Java
Java Program to Implement Uniform-Cost Search
Hướng dẫn Java Design Pattern – MVC
Iterating over Enum Values in Java
Toán tử trong java
A Guide to TreeSet in Java
Lớp Arrarys trong Java (Arrays Utility Class)
Java equals() and hashCode() Contracts
Server-Sent Events in Spring
Java Program to Create the Prufer Code for a Tree
Spring Boot - Unit Test Cases
Một số nguyên tắc, định luật trong lập trình
Kết hợp Java Reflection và Java Annotations
How to Get All Spring-Managed Beans?
What is a POJO Class?
Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected
Lấy ngày giờ hiện tại trong Java
Java Program to Implement Disjoint Set Data Structure
Java Program to Implement LinkedHashSet API
Date Time trong Java 8
Auditing with JPA, Hibernate, and Spring Data JPA
Java Streams vs Vavr Streams
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Spring WebClient vs. RestTemplate
Java Program to Check whether Graph is a Bipartite using 2 Color Algorithm
@Lookup Annotation in Spring
Java Program to Implement Binary Tree
Java Program to Implement DelayQueue API
Check If a String Is Numeric in Java