Table of Contents
import java.net.*; import java.io.*; import java.util.*; class CookiesInJava { static Hashtable theCookies = new Hashtable(); /** * Send the Hashtable (theCookies) as cookies, and write them to * the specified URLconnection * * @param urlConn The connection to write the cookies to. * @param printCookies Print or not the action taken. * * @return The urlConn with the all the cookies in it. */ public URLConnection writeCookies (URLConnection urlConn, boolean printCookies){ String cookieString = ""; Enumeration keys = theCookies.keys(); while (keys.hasMoreElements()) { String key = (String)keys.nextElement(); cookieString += key + "=" + theCookies.get(key); if (keys.hasMoreElements()) cookieString += "; "; } urlConn.setRequestProperty("Cookie", cookieString); if (printCookies) System.out.println("Wrote cookies:\n " + cookieString); return urlConn; } /** * Read cookies from a specified URLConnection, and insert them * to the Hashtable * The hashtable represents the Cookies. * * @param urlConn the connection to read from * @param printCookies Print the cookies or not, for debugging * @param reset Clean the Hashtable or not */ public void readCookies(URLConnection urlConn, boolean printCookies, boolean reset){ if (reset) theCookies.clear(); int i=1; String hdrKey; String hdrString; String aCookie; while ((hdrKey = urlConn.getHeaderFieldKey(i)) != null) { if (hdrKey.equals("Set-Cookie")) { hdrString = urlConn.getHeaderField(i); StringTokenizer st = new StringTokenizer(hdrString,","); while (st.hasMoreTokens()) { String s = st.nextToken(); aCookie = s.substring(0, s.indexOf(";")); // aCookie = hdrString.substring(0, s.indexOf(";")); int j = aCookie.indexOf("="); if (j != -1) { if (!theCookies.containsKey(aCookie.substring(0, j))){ // if the Cookie do not already exist then when keep it, // you may want to add some logic to update // the stored Cookie instead. thanks to rwhelan theCookies.put (aCookie.substring(0, j),aCookie.substring(j + 1)); if (printCookies){ System.out.println("Reading Key: " + aCookie.substring(0, j)); System.out.println(" Val: " + aCookie.substring(j + 1)); } } } } } i++; } } /** * Display all the cookies currently in the HashTable * */ public void viewAllCookies() { System.out.println("All Cookies are:"); Enumeration keys = theCookies.keys(); String key; while (keys.hasMoreElements()){ key = (String)keys.nextElement(); System.out.println(" " + key + "=" + theCookies.get(key)); } } /** * Display the current cookies in the URLConnection, * searching for the: "Cookie" header * * This is Valid only after a writeCookies operation. * * @param urlConn The URL to print the associates cookies in. */ public void viewURLCookies(URLConnection urlConn) { System.out.print("Cookies in this URLConnection are:\n "); System.out.println(urlConn.getRequestProperty("Cookie")); } /** * Add a specific cookie, by hand, to the HastTable of the Cookies * * @param _key The Key/Name of the Cookie * @param _val The Calue of the Cookie * @param printCookies Print or not the result */ public void addCookie(String _key, String _val, boolean printCookies){ if (!theCookies.containsKey(_key)){ theCookies.put(_key,_val); if (printCookies){ System.out.println("Adding Cookie: "); System.out.println(" " + _key + " = " + _val); } } } }
2. Read a file from the internet
import java.io.IOException; import java.net.URL; import java.util.Scanner; public class NetUtils { private NetUtils() {} public static String getTextContent(URL url) throws IOException { Scanner s = new Scanner(url.openStream()).useDelimiter("\\Z");; String content = s.next(); return content; } public static void main(String[] args) throws IOException { URL url = new URL("http://www.maixuanviet.com/varia/copyrightnotice.txt"); System.out.println(NetUtils.getTextContent(url)); } }
3. Read a GIF or CLASS from an URL save it locally
import java.io.*; import java.net.*; public class SuckURL { String aFile; String aURL; public static void main(String args[]) { // GIF JAVA How-to at Real's Home String url = "http://www.maixuanviet.com/images/"; SuckURL b = new SuckURL(url, "jht.gif"); b.doit(); } SuckURL(String u, String s){ aURL = u; aFile = s; } public void doit() { DataInputStream di = null; FileOutputStream fo = null; byte [] b = new byte[1]; try { System.out.println("Sucking " + aFile); System.out.println(" at " + aURL ); // input URL url = new URL(aURL + aFile); URLConnection urlConnection = url.openConnection(); urlConnection.connect(); di = new DataInputStream(urlConnection.getInputStream()); // output fo = new FileOutputStream(aFile); // copy the actual file // (it would better to use a buffer bigger than this) while(-1 != di.read(b,0,1)) fo.write(b,0,1); di.close(); fo.close(); } catch (Exception ex) { System.out.println("Oups!!!"); ex.printStackTrace(); System.exit(1); } System.out.println("done."); } }
This example dumps a page using the HTTPS protocol:
import java.io.*; import java.net.*; public class URLReader { public static void main(String[] args) throws Exception { // no longer necessary since JSSE is now included in // recent jdk release... // Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); // System.setProperty("java.protocol.handler.pkgs", // "com.sun.net.ssl.internal.www.protocol"); URL url = new URL("https://www.maixuanviet.com"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } }
There is an issue with the root certificate from Verisign (jdk142 or less, you have an exception talking about “untrusted server”), you may want to review this note: http://sunsolve.sun.com/search/document.do?assetkey=1-26-57436-1.
Done! Happy Coding!
Related posts:
How to Get a Name of a Method Being Executed?
Properties with Spring and Spring Boot
Hướng dẫn Java Design Pattern – Iterator
Java Program to Implement AVL Tree
Hướng dẫn Java Design Pattern – Decorator
Java Scanner hasNext() vs. hasNextLine()
Java Program to Implement Euler Circuit Problem
Apache Commons Collections OrderedMap
Hướng dẫn Java Design Pattern – Facade
Java Program to add two large numbers using Linked List
Java Program to Check whether Directed Graph is Connected using DFS
Giới thiệu Google Guice – Injection, Scope
RestTemplate Post Request with JSON
Tính đa hình (Polymorphism) trong Java
Pagination and Sorting using Spring Data JPA
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Java Program to Implement Regular Falsi Algorithm
Java Program to Implement Shell Sort
Java Program to Generate a Random Subset by Coin Flipping
So sánh ArrayList và Vector trong Java
Spring Boot - Actuator
Java Program to Implement D-ary-Heap
Overview of Spring Boot Dev Tools
Spring 5 WebClient
Template Engines for Spring
Serialize Only Fields that meet a Custom Criteria with Jackson
New Features in Java 13
Java String Conversions
Jackson vs Gson
Java Program to Implement Adjacency List
Java Program to Generate All Subsets of a Given Set in the Lexico Graphic Order
Convert Hex to ASCII in Java