如何在iOS中使用MS CRM 2011 Webservices?

时间:2012-10-16 18:03:10

标签: ios dynamics-crm dynamics-crm-2011 crm

我想为MS Dynamics CRM 2011创建一个iPad应用程序。我们有一个CRM系统,您可以使用AD用户名和密码登录世界任何地方。

我知道CRM附带了Discovery服务,组织服务和OData服务。但我不知道如何使用这些服务?我想知道如何验证用户身份?

以下是我找到但不起作用的示例代码。:(

NSString *username = @"domain/username";
NSString *password = @"password";
NSString *loginURL = @"http://server/OrgName/XRMServices/2011/OrganizationData.svc/";

NSURL *url = [NSURL URLWithString:loginURL];

NSString *JSONString = [NSString stringWithFormat:@"{\"user id\":\"%@\",\"password\":\"%@\"}", username, password];

NSData *JSONBody = [JSONString dataUsingEncoding:NSUTF8StringEncoding];

NSMutableURLRequest *loginRequest = [[NSMutableURLRequest alloc] initWithURL:url];
loginRequest.HTTPMethod = @"POST";
loginRequest.HTTPBody = JSONBody;

NSOperationQueue *queue = [NSOperationQueue new];

[NSURLConnection sendAsynchronousRequest:loginRequest
                 queue:queue
                 completionHandler:^(NSURLResponse *response, NSData *data, 
                                     NSError *error){

                                   // Manage the response here.
                                    [self fetchedData:data];
                                   NSLog(@"error:%@", error);
                                   NSLog(@"response:%@", response);}];
    }

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我见过的大多数实现和产品都使用中介服务器或服务来代理调用CRM。可用的REST服务适用于一般CRUD操作,但缺少其他SDK提供的功能。

优点:

  • 实施更有利于您想要支持的客户的SDK
  • 您可以获得任何CRM SDK中提供的全部功能

缺点:

  • 这可能是很多工作。

如果必须直接从客户端连接到CRM安装。考虑通过浏览器访问OData源,同时使用本地代理或浏览器的DEV工具捕获流量。编写创建相同Web请求的代码。从理论上讲,这与使用浏览器访问CRM一样安全。使用适当的方法加密,屏蔽和模糊您的流量。

还有其他我没有亲身经历过的选择。我可以提供他们进行研究,但不能自信地谈论他们。

MSDN: CRM 2011 REST Service Documentation

MSDN: CRM 2011 SDK Overview

答案 1 :(得分:0)

如果您尝试从iOS本地对Dynamics CRM进行身份验证,则需要很多时间......当我说了很多时,很多。

有不同的CRM配置内部部署/在线,使用IFD和https(实际上需要对ADFS进行身份验证,验证证书链等等)会更加棘手。

您可以开始的最简单的事情是公开一个在.NET中实现的代理Web服务,该服务处理针对您的CRM身份验证,然后从您的iOS应用程序验证该Web服务(使用普通的https请求和一种更简单的认证机制)

但是,即使这样做,它仍然需要很长时间。