我编写了一些Python代码,通过API登录并从Polarion服务器读取一些数据(更多关于Polarion:https://almdemo.polarion.com/polarion/sdk/index.html的非正式信息)。在我的代码中,我使用了zeep包来处理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)将当前会话添加到标头中--因此当前会话仍处于活动状态。
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--)关闭当前会话。
我所观察到的:在第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
}
最让我惊讶的是:
之间添加了一个等待(例如1)。
我想知道为什么服务器拒绝某些请求。是某种Polarion服务器的问题吗?如果服务器拒绝了我的第一个请求,我如何才能与服务器连接,并且能够从服务器读取一些数据。
发布于 2019-11-21 10:57:06
它似乎是SOAP客户端的问题(也是比较流行的)。为了解决这个问题,我已经关闭了TLS的验证。更多细节见:https://python-zeep.readthedocs.io/en/master/transport.html
https://stackoverflow.com/questions/58641754
复制相似问题