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 Pollard Rho Algorithm
Spring Boot - Database Handling
Spring NoSuchBeanDefinitionException
Guide to Spring Cloud Kubernetes
Java Program to Check Multiplicability of Two Matrices
Marker Interface trong Java
Java Program to Represent Linear Equations in Matrix Form
Hướng dẫn Java Design Pattern – Prototype
Java Program to Implement Stack using Two Queues
Sorting Query Results with Spring Data
Constructor Dependency Injection in Spring
Spring Data JPA Delete and Relationships
Java Program to Implement Binary Search Tree
Iterable to Stream in Java
Java Program to Implement the One Time Pad Algorithm
Java Program to Implement Binary Tree
Java Program to Implement Hash Tree
Java Program to Implement Treap
Performance Difference Between save() and saveAll() in Spring Data
Java – Try with Resources
JUnit5 Programmatic Extension Registration with @RegisterExtension
Mệnh đề if-else trong java
Java 8 Stream findFirst() vs. findAny()
Java Program to Implement Circular Doubly Linked List
Java Program to Implement JobStateReasons API
Test a REST API with Java
Testing in Spring Boot
Abstract class và Interface trong Java
Java Program to Implement Booth Algorithm
How to Get the Last Element of a Stream in Java?
Predicate trong Java 8
Câu lệnh điều khiển vòng lặp trong Java (break, continue)