Basically i just want to get cookies from server. Here's simple code, but i guess it's not enough to get every cookie like e.g sessionID etc.
import java.net.*;
import java.util.*;
public class Cookie {
public static void main(String[] args) {
try {
URL url = new URL("http://www.google.com/");
URLConnection conn = url.openConnection();
System.out.println(con.getHeaderField("Set-Cookie"));
} catch (Exception e) { }
}
}
Result shows that i get only one cookie:
NID=61=nNSsAl4g7DfxqHE7t__ghfoCc_J-RmY7PaTNoPOd_khLdvvuqI-fnteHgnQXMzmxj_C5HdMozcGfOTt8PvePLKpbDdUlzdVZiRKwNpQIej6_T69jt9C7Oi6E4F-gWPHD; expires=Mon, 14-Jan-2013 17:16:40 GMT; path=/; domain=.google.pl; HttpOnly
Firefox gets NID and PREF, so it's not working.
Is there any way to get PREF cookie?
Can anyone tell me is this proper way(code below) to send POST.
import java.io.*;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
public class Cookie_Example {
public static void main(String[] args){
try{
String https_url = "https://ssl.filmweb.pl/j_login";
URL url = new URL(https_url);
String post = "_login_redirect_url=http%253A%252F%252Fwww.filmweb.pl%252F&j_username=test.filmweb%40gmail.com&j_password=test.filmweb&_rememberMe=on&pass=zaloguj";
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
con.setInstanceFollowRedirects(false);
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestMethod("GET");
con.setRequestProperty("Host", "ssl.filmweb.pl");
con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1");
con.setRequestProperty("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
con.setRequestProperty("Accept-Language","pl,en-us;q=0.7,en;q=0.3");
con.setRequestProperty("Accept-Encoding","gzip, deflate");
con.setRequestProperty("Connection","keep-alive");
con.setRequestProperty("Referer","https://ssl.filmweb.pl/login");
con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
con.setRequestProperty("Content-Length",post.length()+"");
DataOutput output = new DataOutputStream(new BufferedOutputStream(con.getOutputStream()));
output.write(post.getBytes());
Map<String, List<String>> hf = con.getHeaderFields();
Iterator it = hf.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
System.out.println(pairs.getKey() + " = " + pairs.getValue());
}
} catch (Exception e) {
}
}
}
Result is empty cookie,
Set-Cookie = [_artuser_rememberMe=;Path=/;Domain=filmweb.pl;Expires=Thu, 01-Jan-1970 00:00:00 GMT]
http://img72.imageshack.us/img72/1134/testgof.jpg
Screen from Tamper Data
It means this code also doesn't work. How Can I get __utma, __utmz etc. cookie? Can anyone help me? Which books will be helpful?
openConnection(); Create a cookie string: String myCookie = "userId=igbrown"; Add the cookie to a request: Using the setRequestProperty(String name, String value); method, we will add a property named "Cookie", passing the cookie string created in the previous step as the property value.
addCookie(new Cookie("1","1")); response. addCookie(new Cookie("2","2")); would create a response with 2 "Set-Cookie" headers.
HttpURLConnection class is an abstract class directly extending from URLConnection class. It includes all the functionality of its parent class with additional HTTP-specific features. HttpsURLConnection is another class that is used for the more secured HTTPS protocol.
I think that with your statement, con.getHeaderField("Set-Cookie")"
you only retrieve one header. But maybe the server sends you two cookies, in two different headers.
I use another statement for retrieve all headers of cookies:
List<String> cookies = connection.getHeaderFields().get("Set-Cookie");
To see what you send to server, and what the server sends to you, I recommend use a proxy between your program (or web navigator) and the server. Maybe Charles proxy
can help you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With