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:
Rate Limiting in Spring Cloud Netflix Zuul
Examine the internal DNS cache
Java Program to Implement LinkedList API
Java Program to Implement Radix Sort
Java Program to Implement Sorting of Less than 100 Numbers in O(n) Complexity
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Java Program to Generate Random Hexadecimal Byte
Java Program to Perform Sorting Using B-Tree
Java TreeMap vs HashMap
Tìm hiểu về xác thực và phân quyền trong ứng dụng
Why String is Immutable in Java?
Convert Hex to ASCII in Java
Java Program to Implement Vector API
Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions
Redirect to Different Pages after Login with Spring Security
Tạo ứng dụng Java RESTful Client với thư viện Retrofit
Receive email using POP3
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
Spring Boot - Securing Web Applications
Spring Boot - CORS Support
Predicate trong Java 8
Java Program to Implement Network Flow Problem
An Intro to Spring Cloud Vault
Java Program to Implement the RSA Algorithm
Hướng dẫn Java Design Pattern – Adapter
Java Program to Represent Graph Using Incidence Matrix
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
Java Program to Perform Inorder Recursive Traversal of a Given Binary Tree
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Check If a String Is Numeric in Java
Java Program to Implement Dijkstra’s Algorithm using Priority Queue