Python EWS GetFolder 请求始终无效
Python EWS GetFolder request is always invalid
你好 Whosebug 社区!
我正在尝试使用 Python suds 和 ewsclient 与 Exchange 对话。我创建了一个小程序,它似乎发送了正确的 soap 消息,但它总是被 Exchange 服务器拒绝。
python code for this request is on gist.
肥皂消息:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header/>
<ns1:Body>
<ns2:GetFolder>
<ns2:FolderShape>
<ns0:BaseShape>Default</ns0:BaseShape>
</ns2:FolderShape>
<ns2:FolderIds>
<ns0:DistinguishedFolderId Id="inbox"/>
</ns2:FolderIds>
</ns2:GetFolder>
</ns1:Body>
</SOAP-ENV:Envelope>
结果:
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorInvalidRequest</faultcode>
<faultstring xml:lang="de-AT">The request is invalid.</faultstring>
<detail>
<e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorInvalidRequest</e:ResponseCode>
<e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request is invalid.</e:Message>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
我的请求与 MS developer documentation 之间的唯一区别是名称空间前缀。
对该请求有什么问题有什么想法吗?
另一个区别是您包含了一个空的 Header
元素。您是否尝试过忽略它?
我测试了很多,发现 Exchange 不喜欢 <ns0:DistinguishedFolderId Id="inbox"/>
元素。如果我删除它,我不会收到无效的请求响应,但会丢失 folderId。
SUDS 似乎不再真正维护了,我什至尝试使用 suds jurko,但我遇到了类似的问题。如此大量的工作,而不是将 EWS SOAP 与 python.
一起使用的真正可用方法
看来我必须为该程序切换回 Groovy 和 Java。
你好 Whosebug 社区!
我正在尝试使用 Python suds 和 ewsclient 与 Exchange 对话。我创建了一个小程序,它似乎发送了正确的 soap 消息,但它总是被 Exchange 服务器拒绝。
python code for this request is on gist.
肥皂消息:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header/>
<ns1:Body>
<ns2:GetFolder>
<ns2:FolderShape>
<ns0:BaseShape>Default</ns0:BaseShape>
</ns2:FolderShape>
<ns2:FolderIds>
<ns0:DistinguishedFolderId Id="inbox"/>
</ns2:FolderIds>
</ns2:GetFolder>
</ns1:Body>
</SOAP-ENV:Envelope>
结果:
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorInvalidRequest</faultcode>
<faultstring xml:lang="de-AT">The request is invalid.</faultstring>
<detail>
<e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorInvalidRequest</e:ResponseCode>
<e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request is invalid.</e:Message>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
我的请求与 MS developer documentation 之间的唯一区别是名称空间前缀。
对该请求有什么问题有什么想法吗?
另一个区别是您包含了一个空的 Header
元素。您是否尝试过忽略它?
我测试了很多,发现 Exchange 不喜欢 <ns0:DistinguishedFolderId Id="inbox"/>
元素。如果我删除它,我不会收到无效的请求响应,但会丢失 folderId。
SUDS 似乎不再真正维护了,我什至尝试使用 suds jurko,但我遇到了类似的问题。如此大量的工作,而不是将 EWS SOAP 与 python.
一起使用的真正可用方法看来我必须为该程序切换回 Groovy 和 Java。