经过大量搜索后,我发布了这个问题。
这是问题..
我正在使用EWS使用自动发现来联系MAc应用程序。
这是我的XML请求
NSString *soapMessage = [NSString stringWithFormat:
@"<Autodiscover xmlns=\"http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006/\">"
"<Request>"
"<EMailAddress>%@</EMailAddress>"
"<AcceptableResponseSchema>"
"http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a"
"</AcceptableResponseSchema>"
"</Request>"
"</Autodiscover>",self.emailId.stringValue];
NSLog(@"%@",soapMessage);
NSURL *url = [NSURL URLWithString:@"https://<domainname>/EWS/Exchange.asmx"];
以上只是片段。已完整传递其他标头。
我的问题在于传递用户凭证的确切位置,因为它们传递了C#,如下所示
ExchangeServiceBinding esb = new ExchangeServiceBinding();
esb.Credentials = new NetworkCredential("<username>", "<password>", "<domain>");
我尝试使用质询验证,并尝试使用标头授权发送它。但没有运气。
非常感谢任何帮助实现这一目标。
答案 0 :(得分:4)
所有关于为EWS构建正确的XML请求。就是这样......
使用https://www.testexchangeconnectivity.com/获取邮件,联系人,日历以进行测试。
检查它生成的请求,将其复制到XML的标题部分。
它像微风一样......
发布此内容以节省一些非窗口开发人员的时间。
答案 1 :(得分:0)
实际上,质询验证适用于Exchange Web服务。 EWS使用ServerTrust和NTLM身份验证。 以这种方式实现NSURLConnectionDelegate方法:
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
if ( challenge.previousFailureCount > 0 )
{
// handle authentication error here, e.g. NSError *authError = ...;
return;
}
// username and password should be stored as ivars.
NSString *username = @"your_username";
NSString *password = @"your_password";
NSURLCredential *urlCredential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistenceForSession];
[challenge.sender useCredential:urlCredential forAuthenticationChallenge:challenge];
}
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
// Should return YES for NTLM and ServerTrust methods.
NSString *authMethod = protectionSpace.authenticationMethod;
return ([authMethod isEqualToString:NSURLAuthenticationMethodServerTrust] ||
[authMethod isEqualToString:NSURLAuthenticationMethodNTLM] );
}