ios - Restkit和SSL证书错误

时间:2013-01-09 20:17:50

标签: ios web-services tomcat ssl restkit

我有一个tomcat服务器,它使用自签名SSL证书并运行Web服务。我正在尝试使用Restkit连接到Web服务。但是,我收到与证书有效性相关的错误。这是我的代码:

NSURL *url=[NSURL URLWithString:baseURL];

RKClient *client = [RKClient clientWithBaseURL:url];
client.disableCertificateValidation=YES;

RKRequest *request = [client requestWithResourcePath:[NSString stringWithFormat:@"/addEvent?deviceID=%@&eventID=%@",deviceID,eventID]];
request.disableCertificateValidation=YES;
request.delegate=self;
RKResponse *response = [request sendSynchronously];

此请求失败,并显示以下错误:

2013-01-09 15:11:53.931 Mobile_ACPL[5761:907] The certificate for this server is invalid. You might be connecting to a server that is pretending to be “notify.acpl.lib.in.us” which could put your confidential information at risk.

即使我已将disableCertificateValidation设置为YES,我也会收到此错误。我怎样才能使这个工作?

编辑:我尝试添加证书,如下所示:https://github.com/RestKit/RestKit/pull/131

我仍然得到相同的结果。

编辑2:看起来在RKRequest.m中的此行设置了错误消息:

    payload = [NSURLConnection sendSynchronousRequest:_URLRequest returningResponse:&URLResponse error:&error];

3 个答案:

答案 0 :(得分:2)

NSURLConnection不支持同步调用中的authentication challenges。您需要进行异步调用才能生效。

答案 1 :(得分:1)

就我而言,我在RKClient上设置了disableCertificateValidation,但我使用的是一个使用不同RKClient的RKObjectManager。放置在RKObjectManager初始化之后的以下行完成了这一操作:

[RKObjectManager sharedManager].client.disableCertificateValidation = YES;

答案 2 :(得分:0)

如果您使用

使用RestKit
client.allowsInvalidSSLCertificate = YES;

不起作用,而是这样做:

如果您手动将rest kit添加到项目中,请单击RestKit.xcodeproj转到项目>构建设置>预处理器宏

并添加_AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_=1

那已经结束了。