当前位置: 首页 > 工具软件 > EWS Java API > 使用案例 >

java ews appointment_EWS Java API 1.1创建约会 - 缺少TimeZoneDefinition

裴和怡
2023-12-01

我遇到了同样的问题 - 并尝试了大部分内容(除了来自editig的java ews api本身),使我的Spring Web应用程序中的StartTimeZone约会与Exchange 2007 SP1一起使用 - 没有成功。

我发现了以下评论:

遗憾的是,Exchange 2007 SP1不支持EWS的StartTimeZone属性。如果要使用该属性,则必须使用Exchange 2010。

我应该去寻找不那么“诡异”的Java Exchange Framework。

我并不高兴,因为我听说在.NET领域没有这样的问题我决定采用以下解决方案:

我建立了一个自托管的Nancy Server。

请参阅Nancy Documentation

并写了一个简单的NancyModule:

namespace WebServiceNancy

{

public class APIModul : NancyModule

{

public APIModul() : base("/")

{

Post["/saveFooApp"] = _ =>

{

var jsonApp = this.Bind();

string ewsURL = "https://saveFooApp/ews/exchange.asmx";

System.Uri ewsUri = new System.Uri(ewsURL);

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

service.Url = ewsUri;

service.Credentials = new WebCredentials(jsonApp.Username, jsonApp.Password);

Appointment app = new Appointment(service);

app.Subject = jsonApp.Title;

app.Start = jsonApp.Start;

app.End = jsonApp.End;

app.Save(WellKnownFolderName.Calendar);

return Response.AsText("OK").WithStatusCode(HttpStatusCode.OK);

};

}

}

public class AppData

{

public string Title { get; set; }

public DateTime Start { get; set; }

public DateTime End { get; set; }

public string Username { get; set; }

public string Password { get; set; }

}

}现在我可以通过RestTemplate将我的约会数据作为json对象传递给我的Spring Controller来调用这个WS:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String startDate = formatter.format(fooMeeting.getMeetingStart());

String endDate = formatter.format(fooMeeting.getMeetingEnd());

JSONObject obj = new JSONObject();

obj.put("title", fooMeeting.getTitle());

obj.put("start", startDate);

obj.put("end", endDate);

obj.put("username", fooUser.getUsername());

obj.put("password", fooUser.getPassword());

RestTemplate rt = new RestTemplate();

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_JSON);

JSONSerializer jsonSer = new JSONSerializer();

HttpEntity entity = new HttpEntity(jsonSer.serialize(obj), headers);

ResponseEntity response = rt.exchange("http://localhost:8282/saveFooApp", HttpMethod.POST, entity, String.class);

System.out.println(response.getStatusCode());当你将凭证从一个服务器传递到另一个服务器时,你需要决定是否要使用某种密码加密 - 以及如何实现错误处理。

但它对我来说就像一个魅力

我对未来有关其他EWS功能的要求非常有信心。

 类似资料: