HttpsURLConnection and Cookies

14,466

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.

Share:
14,466
daredesm
Author by

daredesm

Updated on August 01, 2022

Comments

  • daredesm
    daredesm almost 2 years

    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?