exchange java ews_如何使用Java EWS API搜索iCalUid的Exchange约会?

我正在使用

Java EWS library在iCalUid中搜索用户日历中的约会(示例iCalUid我有:040000008200E00074C5B7101A82E00800000000F66E2C0D59A9D001000000000000000010000000F7A6AACB779B00429164F39AE6DD6BB9).这是我的Scala代码:

import microsoft.exchange.webservices.data._

import java.net.URI

import java.util.Date

val exchange = {

val service = new ExchangeService(ExchangeVersion.Exchange2010_SP2)

service.setUrl(new URI(host))

service.setCredentials(new WebCredentials(user, pass))

service

}

def calendarFolderFor(email: String) = new FolderId(WellKnownFolderName.Calendar, Mailbox.getMailboxFromString(email))

def findMatchingAppointments(iCalUid: String, email: String) = {

val searchFilter = new SearchFilter.IsEqualTo(AppointmentSchema.ICalUid, iCalUid)

exchange.findItems(calendarFolderFor(email), searchFilter, new ItemView(1)).getItems

}

上面的代码抛出了这个错误:

microsoft.exchange.webservices.data.ServiceResponseException: The property can not be used with this type of restriction.

at microsoft.exchange.webservices.data.ServiceResponse.internalThrowIfNecessary(ServiceResponse.java:262) ~[ews-java-api-1.3-SNAPSHOT.jar:na]

at microsoft.exchange.webservices.data.ServiceResponse.throwIfNecessary(ServiceResponse.java:251) ~[ews-java-api-1.3-SNAPSHOT.jar:na]

at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:146) ~[ews-java-api-1.3-SNAPSHOT.jar:na]

at microsoft.exchange.webservices.data.ExchangeService.findItems(ExchangeService.java:807) ~[ews-java-api-1.3-SNAPSHOT.jar:na]

at microsoft.exchange.webservices.data.ExchangeService.findItems(ExchangeService.java:851) ~[ews-java-api-1.3-SNAPSHOT.jar:na]

然后我尝试调整this thread的代码:

def findMatchingAppointments(iCalUid: String, email: String) = {

import org.apache.commons.codec.binary.{Hex, Base64}

val searchFilter = new SearchFilter.IsEqualTo(

new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Appointment, 0x03, MapiPropertyType.Binary),

Base64.encodeBase64String(Hex.decodeHex(iCalUid.toCharArray))

)

val view = new ItemView(1)

view.setPropertySet(new PropertySet(BasePropertySet.FirstClassProperties, AppointmentSchema.ICalUid))

exchange.findItems(calendarFolderFor(email), searchFilter, view).getItems

}

但是,现在它不会抛出异常,但它也没有找到约会.我知道约会存在是因为我强迫并​​使用这段代码找到约会:

def bruteForceFind(start: Date, end: Date, iCalUid: String, email: String) = {

val view = new CalendarView(start, end, 100)

exchange.findAppointments(calendarFolderFor(email), view).getItems

val allAppointments = exchange.findAppointments(calendarFolderFor(email), view).getItems

allAppointments.filter(_.getICalUid == iCalUid)

}

我究竟做错了什么?如何在给定iCalUid的情况下搜索用户的约会?使用Java / Scala代码也没问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值