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。