有人成功用Python suds连接Exchange Web Services吗?

2 投票
2 回答
2173 浏览
提问于 2025-04-17 06:40

我正在尝试调用一些方法,比如UpdateItem,但一直没有成功。每次都出现以下错误:

异常:导入的模式(http://www.w3.org/XML/1998/namespace)在(http://www.w3.org/2001/xml.xsd)失败

如果有人能提供一些可以正常工作的代码,创建一个客户端并成功调用一个方法,我将非常感激。谢谢。我看到过有人说把模式文件下载到我电脑上可能会有帮助,但我也不太确定该如何在我的代码中实现。以下是我目前的代码:

import urllib2
import suds
import logging
from suds import WebFault
from suds.client import Client
from suds.client import Factory
from suds.transport.http import HttpAuthenticated
from logging import getLogger
logging.getLogger('suds.client').setLevel(logging.CRITICAL)
from suds.xsd.doctor import ImportDoctor, Import

# cannot access schema through browser
imp = Import('http://schemas.microsoft.com/exchange/services/2006/messages')
d = ImportDoctor(imp)
client = Client('http:path to wsdl', doctor = d, username='my_username',       
password='my_password')
retVal = client.service.GetServerTimeZones()
print retVal

2 个回答

0

这个问题虽然有点老了,但对于那些来这里寻找替代方案的人来说,有一个新的工具可以试试,它使用了suds - EWSWrapper_py,这是一个用Python实现的EWS Wrapper。这个工具主要是针对Exchange日历的,但它为进一步开发提供了很好的基础。源代码托管在GIT上。

简单来说,目前的功能包括:

  • 日历事件的操作:
    • 添加,
    • 更新,
    • 删除,
    • 列出
    • 同步
  • 任务的操作:
    • 添加,
    • 更新,
    • 删除,
    • 列出
  • 文件夹的操作:
    • 列出
    • 同步
0

建议使用这个suds-ews的分支版本。此外,你还需要实现ntlm认证。

撰写回答