我没有使用SBT,而是使用Abdera直接与IBM SmartCloud上的Connections版本进行REST调用。有问题的REST网址:https://apps.na.collabserv.com/search/serviceconfigs
从我的笔记本电脑(使用Firefox和REST客户端插件)进行测试时,这可以正常工作。我找回了ATOM饲料。
使用相同的方法(在Firefox + REST客户端上)从服务器(在不同的网络上)进行测试时,我会返回HTML,这是一个登录页面。
另外,当我从同一服务器上的Java程序调用URL时,我得到了相同的结果。
在所有情况下,我使用与基本身份验证相同的凭据。
更新:如果我首先登录SmartCloud,在服务器上的Firefox中单独的选项卡上,然后像以前一样调用URL,从另一个选项卡中,它可以正常工作。我根据需要获得了ATOM feed。当然,这不适合作为解决方案,但我将其作为可能导致实际解决方案的附加信息提供。
更新:进一步测试显示本地(笔记本电脑)登录表现出与服务器相同的行为。需要从同一浏览器进行基于表单的登录,然后进行后续REST调用。
更新:以下是相关的简化代码段:
private static Abdera ABDERA = new Abdera();
private static AbderaClient ABDERA_CLIENT = new AbderaClient(ABDERA);
...
String host = "https://apps.na.collabserv.com";
ABDERA_CLIENT.addCredentials(host, AuthScope.ANY_REALM, "basic", new UsernamePasswordCredentials("user", "password"));
...
ClientResponse response = ABDERA_CLIENT.get("https://apps.na.collabserv.com/search/serviceconfigs");
似乎有关原始服务器或呼叫的某些内容导致SmartCloud通过登录页面进行响应。然而,来自我的笔记本电脑的相同电话和凭证,按预期工作。
我应该从哪里开始麻烦拍摄?如何构建客户端凭据以允许以编程方式登录?
如果有帮助,以下是我在每种情况下都会得到的响应标题。
不成功
Status Code: 200 OK
Cache-Control: no-cache
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 1850
Content-Type: text/html
Date: Tue, 08 Oct 2013 14:15:03 GMT
Pragma: no-cache
Server: WebSEAL/6.1.1.3 (Build 110428)
Set-Cookie: PD-H-SESSION-ID=4_0_IR4***masked***oRKlJI;secure; Path=/; HttpOnly BIGipServerE3A-WebSEAL-80-fe=2132806922.20480.0000;secure; path=/
Vary: Accept-Encoding
p3p: CP="NON CUR OTPi OUR NOR UNI"
成功
Status Code: 200 OK
Cache-Control: public, max-age=86400, s-maxage=86400, no-cache=set-cookie, private, must-revalidate
Content-Encoding: gzip
Content-Language: en-US
Content-Length: 1164
Content-Type: application/atom+xml; charset=UTF-8
Date: Mon, 07 Oct 2013 17:21:12 GMT
Expires: Tue, 08 Oct 2013 17:21:12 GMT
Server: WebSphere Application Server/8.0
Vary: Accept-Encoding
p3p: CP="NON CUR OTPi OUR NOR UNI"
x-lconn-auth: true
x-powered-by: Servlet/3.0
答案 0 :(得分:0)
@Grant是您使用SAML登录的?我可以看到这种重定向发生了。也可能与TFIM有关...也许你应该在另一个页面上获取auth,存储cookie,然后尝试连接到上面的端点。