如何通过端点方法从HTTP响应中获取cookie?

时间:2016-04-07 12:18:39

标签: java cookies google-cloud-endpoints

我正在尝试创建一个端点方法,该方法应该将我登录到另一个系统并返回授权cookie的值以便在我的应用程序中进一步使用。即使我的方法成功将我登录到系统(我检查了响应数据),我也无法从响应的头文件中检索cookie。这是从端点方法调用的bean方法。

public String login (String password, String name) {
    String urlParameters = "destination=" + MAILBOX_URL_SUFFIX + "&credential_0=" + name +
        "&credential_1=" + password + "&login=Prihl%E1si%BB+sa";

URL url = null;
// *****************  login  ***********************
try {
    URI uri = new URI("https", "is.stuba.sk", "/system/login.pl", null);
    url = uri.toURL();
} catch (Exception e) {
    e.printStackTrace();
}

HttpURLConnection con = null;

try {
    con =(HttpURLConnection) url.openConnection();
} catch (IOException e) {
    e.printStackTrace();
}

appendRequestHeader(con);

//Send post request
con.setDoOutput(true);
DataOutputStream wr = null;

try {
    wr = new DataOutputStream(con.getOutputStream());
    wr.writeBytes(urlParameters);

    wr.flush();
    wr.close();


    con.connect();
    con.getInputStream();

} catch (IOException e) {
    e.printStackTrace();
}

String cookie = "default";
String headerName=null;
for (int i=1; (headerName = con.getHeaderFieldKey(i))!=null; i++) {
    cookie.concat(con.getHeaderField(i));
}
return cookie;
} 

编辑:该方法返回"默认"所有的时间,没有Set-Cookie,也没有其他cookies

之前,当我没有从服务器端运行该方法时,代码以

开头
        CookieManager manager = new CookieManager();
    manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
    CookieHandler.setDefault(manager);

...而不是使用我用过的con.headerField来成功获取我的cookie。

return manager.getCookieStore().getCookies().get(0).getValue();

然而,CookieManager被列入Google Cloud Endpoints的黑名单,我无法以任何其他方式检索Cookie:(

有什么建议吗?谢谢!

0 个答案:

没有答案