我正在尝试从Android应用程序连接到由ADFS保护的Web API。我成功实现了ADAL。登录到ADFS后,我收到一个令牌和一个cookie。使用该cookie,我应该能够查询webapi,但是我总是被重定向到登录页面。在邮递员中使用相同的cookie字符串,我可以成功查询Web API。有人可以帮助我了解问题出在哪里吗?这是我的代码:
try {
CookieManager cookieManager = CookieManager.getInstance();
String cookie = cookieManager.getCookie(AUTHORITY);
URL url = new URL(urlString);
HttpsURLConnection connection = (HttpsURLConnection)
url.openConnection();
connection.addRequestProperty("Cookie", cookie);
connection.setConnectTimeout(60000);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.setInstanceFollowRedirects(false);
OutputStreamWriter w = new OutputStreamWriter(connection.getOutputStream());
w.write(contents);
w.flush();
InputStream istream = connection.getInputStream();
String result = convertStreamToUTF8String(istream);
return result;
} catch (Exception e) {
e.printStackTrace();
return null;
}
答案 0 :(得分:0)
显然,来自授权URL的cookie是不够的。我需要添加另一个cookie(EdgeAccessCookie)。在仔细检查Postman控制台中的cookie字符串后发现了这一点。