我有一个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];
答案 0 :(得分:2)
NSURLConnection不支持同步调用中的authentication challenges。您需要进行异步调用才能生效。
答案 1 :(得分:1)
就我而言,我在RKClient上设置了disableCertificateValidation,但我使用的是一个使用不同RKClient的RKObjectManager。放置在RKObjectManager初始化之后的以下行完成了这一操作:
[RKObjectManager sharedManager].client.disableCertificateValidation = YES;
答案 2 :(得分:0)
如果您使用
使用RestKitclient.allowsInvalidSSLCertificate = YES;
不起作用,而是这样做:
如果您手动将rest kit添加到项目中,请单击RestKit.xcodeproj转到项目>构建设置>预处理器宏
并添加_AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_=1