AFNetworking使用HTTPS而不是HTTP

时间:2015-07-26 06:09:10

标签: ios afnetworking afnetworking-2

我在开发iOS应用程序时正在尝试使用AFNetworking。我试图去一个http网站,我的请求失败,说它作为https请求失败

NSString *urlString = [NSString stringWithFormat:@"http://api.openweathermap.org/data/2.5/weather?lat=%f&lon=%f&APPID=%@",lat, lon, [plistData objectForKey:@"weather"]];
NSURL *url = [[NSURL alloc] initWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

和错误回复

Printing description of error:
Error Domain=NSURLErrorDomain Code=-1004
"Could not connect to the server."
UserInfo=0x7fa104a253d0 {
NSUnderlyingError=0x7fa104820950 "Could not connect to the server.", 
NSErrorFailingURLStringKey=https://api.openweathermap.org/data/2.5/weather?lat=[removed]&lon=[removed]&APPID=[removed], 
NSErrorFailingURLKey=https://api.openweathermap.org/data/2.5/weather?lat=[removed]&lon=[removed]&APPID=[removed], _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=61,
NSLocalizedDescription=Could not connect to the server.}

在测试网站时,它的https部分是网站失败的。因为我没有把它放在https中并明确地输入http我不知道什么是错的。

我正在使用AFNetworking 2.5.1

要明确,我不是想通过https连接!我不知道为什么我认为我是。请在发布答案或建议重复之前阅读整个问题。

2 个答案:

答案 0 :(得分:1)

由于Apple已经更改了App构建的要求,我需要将URL列入白名单

    <key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>api.openweathermap.org</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

以上代表了将链接列入白名单所必需的info.plist 这有助于我使用HTTP链接。您也可以允许任意加载,但Apple不鼓励这样做。如果您想了解更多信息,请查看Apple的开发人员会话,以及#34;与NSURLSession建立联系&#34;

答案 1 :(得分:0)

使用此:

operation.securityPolicy.allowInvalidCertificates = YES;