好的,我有一个技术问题。我们在 XStudio 中开发了一个集成组件,以便我们可以选择 VersionOne 的“Stories”(作为 XStudio 中的“Requirements”)和“Defects”(作为 XStudio 中的“Bugs”)。这样,您可以从 XStudio 执行测试并管理结果、指标等,还可以使用 VersionOne 的项目在 XStudio 中管理完整的可追溯性矩阵(产品 -> 需求 -> 测试 -> 测试活动 -> 错误)。我们处理我们这边的链接。
为此,我们使用 VersionOne 的 REST API 实现了连接器。一切都很好!非常快等
我们使用 VersionOne 的免费服务器对其进行了测试,没有任何问题。我们的 Java 代码管理 cookie 以便它使用“基本身份验证”协议进行身份验证,我们从 VersionOne 检索 cookie,将其存储在本地 CookieStore 并在下一个请求中提供该 cookie,这样我们就不必一次又一次地进行身份验证。从我们这边来看,这一切都很好。
The content looks like this:
{X-Instart-Request-ID=[7405870175418545839:SEN01-NPPRY09:1396448658:44],
null=[HTTP/1.1 200 OK],
Date=[Wed, 02 Apr 2014 14:24:17 GMT],
Content-Length=[16063],
Expires=[-1],
VersionOne=[Ultimate/14.0.7.6706; Scrum],
Set-Cookie=[.V1.Ticket.ncnuaaa=HFZlcnNpb25PbmUuV2ViLkF1dGhlbnRpY2F0b3LqgwAAB1hTdHVkaW+CjqLWdBzRCP8/N/R1KMorEByFu31RuGY+eqVCi1FHvTE=; path=/; HttpOnly],
Connection=[keep-alive],
Content-Type=[text/xml; charset=utf-8],
Server=[Microsoft-IIS/8.0],
Pragma=[no-cache],
Cache-Control=[no-cache]}
但是...当我们在客户端环境中运行代码时,出于任何原因,我们都没有得到原始 cookie!?
{cache-control=[no-cache],
content-type=[text/xml; charset=utf-8],
null=[HTTP/1.1 200 OK], expires=[-1],
content-length=[16063],
server=[Microsoft-IIS/8.0],
date=[Wed, 02 Apr 2014 12:34:08 GMT],
pragma=[no-cache]}
当我们的代码从连接中获取标题字段并且我们尝试获取“Set-Cookie”字段时它找不到它并且会自动显示一个弹出窗口。
Map<String, List<String>> headerFields = connection.getHeaderFields();
List<String> cookiesHeader = headerFields.get("Set-Cookie");
弹出窗口要求进行身份验证(顺便说一下“www6.v1host.com/192.33.31.50”,而更预期的是“www6.v1host.com/abcded” - 也许这里有线索?)。
如果我们在您的服务器上进行身份验证,一切都会正常进行,一切正常。但是我们不应该像之前在连接中那样再次进行身份验证:
String plainAuth = username + ":" + password;
encodedAuth = ("Basic " + new String(Base64.encode(plainAuth.getBytes()))).replaceAll("\n", "");
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", encodedAuth);
connection.setRequestProperty("Connection", "keep-alive");
所以,不确定这是否是因为身份验证不起作用(它会解释为什么不返回 cookie 并且弹出窗口要求用户明确地进行身份验证)或者在 cookie 管理方面有一些特定的东西......
你知道这里会发生什么吗?
此代码在使用 Basic Auth 的许多其他 REST API 上运行良好。和饼干。提前致谢,