Polarion ALM的API有时不授权任何请求

标签 api web-services soap

我编写了一些Python代码,用于通过API登录Polarion ALM服务器并读取一些数据(有关Polarion API的更多信息:https://almdemo.polarion.com/polarion/sdk/index.html)。在我的代码中,我使用 zeep Python 包来处理 SOAP。

我的算法很简单:
1) 通过 logIn Web 服务登录 ( https://almdemo.polarion.com/polarion/sdk/doc/javadoc/com/polarion/alm/ws/client/session/SessionWebService.html#logIn-java.lang.String-java.lang.String- )
2) 将当前 session 添加到 header - 以便当前 session 保持事件状态。
3) 尝试读取一些数据,例如通过 getRootProjectGroup Web 服务 ( https://almdemo.polarion.com/polarion/sdk/doc/javadoc/com/polarion/alm/ws/client/projects/ProjectWebService.html#getRootProjectGroup-- )。
4) 无论发生什么,我都会通过 endSession Web 服务 ( https://almdemo.polarion.com/polarion/sdk/doc/javadoc/com/polarion/alm/ws/client/session/SessionWebService.html#endSession-- ) 关闭当前 session 。

我观察到的: 有时,在第 3 点,我收到带有授权错误的响应(带有响应的片段):
<soapenv:Fault>\n <faultcode>soapenv:Server.generalException</faultcode>\n <faultstring>Not authorized.</faultstring>\n <detail>\n <ns1:stackTrace xmlns:ns1="http://xml.apache.org/axis/">Not authorized.\n\tat com.polarion.alm.ws.providers.DoAsUserWrapper.invoke(DoAsUserWrapper.java:37)\n\tat org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)\n\t..
或者一切都很好,我收到:

{
    'groupURIs': {
        'SubterraURI': [
            'subterra:data-service:objects:/default/${ProjectGroup}Group'
        ]
    },
    'location': None,
    'name': 'ROOT_CTX_NAME',
    'parentURI': None,
    'projectIDs': None,
    'uri': 'subterra:data-service:objects:${ProjectGroup}Group',
    'unresolvable': False
}

最让我惊讶的是:
- 我总是使用相同的凭据(用户名和密码) - 请求中的 session ID(第 3 点)与登录期间服务器响应中的 session ID(第 1 点)相同,因此 session 应保持事件状态
- 如果我将代码放入循环中(例如 1000 次执行),则所有尝试的结果始终相同(1000 次成功或 1000 次失败),即使我在尝试之间添加等待(例如 1 秒)

我想知道为什么服务器拒绝某些请求。这是某种 Polarion 服务器问题吗?我怎样才能解决以某种方式与服务器连接并能够从服务器读取一些数据,即使它拒绝我的第一个请求。

最佳答案

看来这是 SOAP 客户端(也是相对流行的客户端)的问题。为了解决这个问题,我关闭了 TLS 验证。更多详情请参见: https://python-zeep.readthedocs.io/en/master/transport.html

关于Polarion ALM的API有时不授权任何请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58641754/

相关文章:

javascript - 如何在从 API 获取数据时添加加载动画? Vanilla js

c - API 应该假设正确的调用顺序,还是应该验证这些假设?

java - 将Web服务请求转换为内部表示?

soap - 是否可以在 wsdl 文件中要求参数的最小和最大字符串长度?

java - 从 TeSTLink XML-RPC 响应恢复 TestSuites 的顺序?

rest - 检索特定组的 key 斗篷组 ID

java - elgg网络服务客户端

java - WSDL2Java Axis 之后无法建立与 SOAP WebService 的连接

web-services - 公共(public) SOAP Web 服务

java - 使用 SOAP WS 返回错误 401 未经授权