2014-10-19 103 views
2

我試圖模擬一個使用HtmlUnit 2.15的場景,其中cookie將被保存在前一個會話中,並且應該在新會話中請求頁面時發送給服務器。 下面是該代碼...HtmlUnit CookieManager不向第一個請求發送cookie

String url = "http://localhost:55545/"; 
    String domain = "localhost:55545"; 

    java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF); 

    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24); 
    CookieManager cookieManager = webClient.getCookieManager(); 
    cookieManager.setCookiesEnabled(true); 

    Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.HOUR, 1); 
    Cookie cookie = new Cookie(domain, "cName", "cValue", "/", cal.getTime(), false); 

    cookieManager.addCookie(cookie); 
    webClient.setCookieManager(cookieManager); 

    HtmlPage page = null; 
    try { 
     page = webClient.getPage(url); 
    } catch (FailingHttpStatusCodeException e) { 
     System.err.print(e.toString()); 
     return; 
    } catch (MalformedURLException e) { 
     System.err.print(e.toString()); 
     return; 
    } catch (IOException e) { 
     System.err.print(e.toString()); 
     return; 
    } 

預期的行爲是我應該然而,沒有曲奇餅接收那裏的服務器接收cookie的「CNAME」。同時通過代理(fiddler)驗證請求我發現在首次請求時,web客戶端沒有發送Cookie頭文件。

有沒有人通過這個?希望在進入調試HtmlUnit庫之前提供一些建議。

回答

0

使用this answer(基本上是自己構建的WebRequest,手動添加餅乾,然後將它傳遞給WebClient的),因爲它可能是您的設置(例如使用彈簧試驗/ WebMVC用的HtmlUnit)不「通過「從一個請求到下一個請求。