我正在尝试创建一个端点方法,该方法应该将我登录到另一个系统并返回授权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:(
有什么建议吗?谢谢!