2012-12-02 31 views
2

我在Java中發佈POST時無法讀取正在發送的cookie。Java - 在發佈帖子後讀取cookie

這裏是我的代碼:

public static void main(String[] args) throws MalformedURLException, IOException { 
    String urlParameters = "votebut="; 
    String request = "http://www.runelocus.com/toplist/vote-17648.html"; 
    URL url = new URL(request); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
    connection.setDoOutput(true); 
    connection.setDoInput(true); 
    connection.setInstanceFollowRedirects(false); 
    connection.setRequestMethod("POST"); 
    connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0"); 
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    connection.setRequestProperty("charset", "utf-8"); 
    connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length)); 
    connection.setUseCaches(false); 

    DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); 
    wr.writeBytes(urlParameters); 
    wr.flush(); 
    wr.close(); 
    List<String> cookies = connection.getHeaderFields().get("Set-Cookie"); 
    for (String cookie : cookies) { 
     System.out.println("Cookies: " + cookie); 
    } 
    connection.disconnect(); 
} 

這是它打印:
Cookies: PHPSESSID=48863f8c3adcbddf0e77e7f1b450fc0e; path=/

這就是我希望它打印:
ki_u=68debd85-c1af-f1ff-2e6c-4146755c6e26; ki_t=1354418220596%3B1354418220596%3B1354422379616%3B1%3B36;

任何幫助嗎?

謝謝

+0

你在哪裏設置預期的cookies? –

回答

1

不可能以這種方式讀取該cookie。

爲了響應http://www.rune...17648.html,您只會在響應標題中獲得PHPSESSID cookie。

這裏面你正在尋找(ki_uki_t)Cookie由JavaScript代碼在這個文件中設置:

http://s3.amazonaws.com/ki.js/45645/919.js 

所以實際拿到的cookie值,你需要複製瀏覽器行爲或實際使用瀏覽器(請求html頁面,解析它,下載引用的資源(特別是919.js)並執行JavaScript代碼)。

+0

你能告訴我一個辦法嗎?我不擅長html。也許代碼或什麼? – user1869674

+0

@ user1869674我想不出如何以編程方式使用Java來實現這一點。我將使用瀏覽器和自動化集成工具(例如Selenium)來完成此類任務。 – Andrey