使用python suds clien的liferay 6.2GA2 soap身份验证

2024-09-25 00:34:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我对liferay6.2soapapi有一些问题:我需要它来用pythonsuds客户机搜索用户。在

在liferay 6.1中,我使用了以下代码,它运行得很好:

from suds.client import Client
c = Client('http://liferay62instance.domain.com/api/secure/axis/Portal_UserService?wsdl', username='liferayuser', password='liferaypassword')
c.service.getUserByScreenName(companyId=10154, screenName='user')

在liferay 6.2中,wsdl url已更改,默认情况下不需要http身份验证,因此使用以下代码会出现错误:

^{pr2}$

错误是:

Server raised fault: 'java.rmi.RemoteException: Authenticated access required'

通过服务器端回溯:

14:50:45,030 ERROR [ajp-bio-9009-exec-8][UserServiceSoap:845]
java.lang.SecurityException: Authenticated access required
java.lang.SecurityException: Authenticated access required

你知道如何在liferay6.2中通过soap身份验证吗??在

谢谢你的回答。在

杰罗姆。在


Tags: 代码client身份验证httplangaccess错误required
1条回答
网友
1楼 · 发布于 2024-09-25 00:34:07

最后,我使用HttpAuthenticated传输从suds.transport.http

使用它将添加一个新的头Authorization,该头具有base64编码的用户名+密码组合,并将在每个soap请求中使用。在

下面是一个例子:

from suds.client import Client
from suds.transport.http import HttpAuthenticated

t = HttpAuthenticated(username='liferayuser', password='liferaypassword')
c = Client('http://liferay62instance.domain.com/api/axis/Portal_UserService?wsdl', transport=t)
result = c.service.getUserByScreenName(companyId=10154, screenName='user')

相关问题 更多 >