6

我试图GetUserAvailabilityRequest从不遵守夏令时的南非标准时间拨打电话,但是,TimeZone 元素需要 StandardTime 和 DaylightTime 子元素,这些子元素需要有关与 DST 之间的切换的详细信息。省略这些元素会导致错误,就像提交任意数据一样。有谁知道打这个电话的正确方法?

更多细节基于@jan-doggen 的评论。在此示例中,用户位于南非标准时间

请求(任意 ST 和 DST 更改日期为 1 月 1 日)

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<soap:Body>
    <GetUserAvailabilityRequest xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
        <t:TimeZone xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
            <Bias>-120</Bias>
            <StandardTime>
                <Bias>0</Bias>
                <Time>00:00:00</Time>
                <DayOrder>1</DayOrder>
                <Month>1</Month>
                <DayOfWeek>Wednesday</DayOfWeek>
            </StandardTime>
            <DaylightTime>
                <Bias>0</Bias>
                <Time>00:00:00</Time>
                <DayOrder>1</DayOrder>
                <Month>1</Month>
                <DayOfWeek>Wednesday</DayOfWeek>
            </DaylightTime>
        </t:TimeZone>
        <MailboxDataArray>
            <t:MailboxData>
                <t:Email>
                    <t:Address>test1@domain.com</t:Address>
                </t:Email>
                <t:AttendeeType>Organizer</t:AttendeeType>
                <t:ExcludeConflicts>false</t:ExcludeConflicts>
            </t:MailboxData>
            <t:MailboxData>
                <t:Email>
                    <t:Address>test2@domain.com</t:Address>
                </t:Email>
                <t:AttendeeType>Required</t:AttendeeType>
                <t:ExcludeConflicts>false</t:ExcludeConflicts>
            </t:MailboxData>
        </MailboxDataArray>
        <t:FreeBusyViewOptions>
            <t:TimeWindow>
                <t:StartTime>2013-05-13T00:55:11</t:StartTime>
                <t:EndTime>2013-05-27T00:55:11</t:EndTime>
            </t:TimeWindow>
            <t:MergedFreeBusyIntervalInMinutes>15</t:MergedFreeBusyIntervalInMinutes>
            <t:RequestedView>FreeBusyMerged</t:RequestedView>
        </t:FreeBusyViewOptions>
    </GetUserAvailabilityRequest>
</soap:Body>

回复:

<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:-2146233088</faultcode>
        <faultstring xml:lang="en-US">The specified time zone isn't valid.</faultstring>
        <detail>
            <m:ErrorCode xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages">-2146233088</m:ErrorCode>
        </detail>
    </s:Fault>
</s:Body>

4

2 回答 2

3

感谢@WilliamPrice 的评论,我设法解决了这个问题。答案是在任意设置这些值时将夏令时月份设置为与标准时间不同的值:

    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<soap:Body>
    <GetUserAvailabilityRequest xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
        <t:TimeZone xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
            <Bias>-120</Bias>
            <StandardTime>
                <Bias>0</Bias>
                <Time>00:00:00</Time>
                <DayOrder>1</DayOrder>
                <Month>1</Month>
                <DayOfWeek>Wednesday</DayOfWeek>
            </StandardTime>
            <DaylightTime>
                <Bias>0</Bias>
                <Time>00:00:00</Time>
                <DayOrder>1</DayOrder>
                **<Month>2</Month>**
                <DayOfWeek>Wednesday</DayOfWeek>
            </DaylightTime>
        </t:TimeZone>
        <MailboxDataArray>
            <t:MailboxData>
                <t:Email>
                    <t:Address>test1@domain.com</t:Address>
                </t:Email>
                <t:AttendeeType>Organizer</t:AttendeeType>
                <t:ExcludeConflicts>false</t:ExcludeConflicts>
            </t:MailboxData>
            <t:MailboxData>
                <t:Email>
                    <t:Address>test2@domain.com</t:Address>
                </t:Email>
                <t:AttendeeType>Required</t:AttendeeType>
                <t:ExcludeConflicts>false</t:ExcludeConflicts>
            </t:MailboxData>
        </MailboxDataArray>
        <t:FreeBusyViewOptions>
            <t:TimeWindow>
                <t:StartTime>2013-05-13T00:55:11</t:StartTime>
                <t:EndTime>2013-05-27T00:55:11</t:EndTime>
            </t:TimeWindow>
            <t:MergedFreeBusyIntervalInMinutes>15</t:MergedFreeBusyIntervalInMinutes>
            <t:RequestedView>FreeBusyMerged</t:RequestedView>
        </t:FreeBusyViewOptions>
    </GetUserAvailabilityRequest>
</soap:Body>
于 2013-05-20T14:41:53.073 回答
3

MSDN 上的所有示例都表明,标准时间和夏令时间具有不同的<Month>. 对夏令时和标准时区使用不同的月份值,但使用相同的<Bias>值。

于 2013-05-20T15:16:24.590 回答