AFNetworking请求错误代码999

时间:2015-10-15 10:24:10

标签: ios objective-c afnetworking rubymotion

我是Objective-c的新手,我很难使用AFNetworking。

所以问题是我想向服务器发一个简单的POST请求,该服务器会给我发回盐。 我制作了一个简单的应用程序,以便测试我的请求,但我不明白为什么我会收到错误代码999.

这是我的代码示例。

+ (void)simpleRequest; {
    NSURL *mailserver = [NSURL URLWithString:@"https://localhost:4443/"];

    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithBaseURL:mailserver];
    manager.securityPolicy.allowInvalidCertificates = TRUE;
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    NSDictionary *parameters = @{@"username": @"testtest"};

    [manager POST:@"api/v0/login/salt" parameters:parameters success:^(NSURLSessionDataTask *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
    } failure:^(NSURLSessionDataTask *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
}

我'将此代码链接到一个简单的按钮,该按钮调用此功能。

我有另一个应用程序,在红宝石动作中,使用此功能对其进行罚款,我可以毫无错误地获得响应。但是使用这个简单的应用程序,我无法做任何请求,他们都返回了此错误代码999。

  

错误:错误域= NSURLErrorDomain代码= -999"已取消"   的UserInfo = {NSErrorFailingURLKey = https://localhost:4443/api/v0/login/salt,   NSLocalizedDescription =取消,   NSErrorFailingURLStringKey = https://localhost:4443/api/v0/login/salt}

所以,我真的想知道我做错了什么,有人可以帮我解决这个问题吗? 感谢

编辑:

这是将经理保存在房产中还是做错事的好方法? 如果它是好方法,这似乎不起作用 谢谢你的帮助

  

.h文件

@property (nonatomic, retain) AFHTTPSessionManager *session;
  

.m文件

@synthesize session;
- (IBAction)log:(id)sender {
NSURL *mailserver = [NSURL URLWithString:@"https://localhost:4443/"];

self.session = [[AFHTTPSessionManager alloc]initWithBaseURL:mailserver];
self.session.securityPolicy.allowInvalidCertificates = TRUE;
self.session.responseSerializer = [AFJSONResponseSerializer serializer];
self.session.requestSerializer = [AFJSONRequestSerializer serializer];
NSDictionary *parameters = @{@"username": @"testtest"};

[self.session POST:@"api/v0/login/salt" parameters:parameters success:^(NSURLSessionDataTask *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionDataTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

5 个答案:

答案 0 :(得分:17)

在我的情况下,iOS 10 SDK导致AFNetworking错误代码为-999。如果您尝试访问具有SSL的服务器并且您不想查看它,请在Afnetworking中添加一些隐私政策

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
securityPolicy.allowInvalidCertificates = YES;

[securityPolicy setValidatesDomainName:NO];

答案 1 :(得分:9)

那是错误-999,而不是999.那是NSURLErrorCancelled。您的请求在完成之前已被取消。

查看代码,您不会在任何地方保留AFHTTPSessionManager *manager。这意味着只要+simpleRequest返回,经理就会被处置。我猜这就是取消你的请求。

您需要保存管理器,使其在整个请求期间保持不变。将它保存在某个地方。

答案 2 :(得分:2)

在我的案例中,iOS 9 SDK" 应用传输安全性"导致 AFNetworking 错误代码:-999 。 如果您尝试访问的服务器没有SSL添加密钥,例如下面的屏幕截图。

enter image description here

答案 3 :(得分:0)

我注意到您的API端点指示安全连接:

  

HTTP <强>取值://本地主机:4443 / API / V0 /登录/盐

试试看以防万一,也许它重复你的情况。

就我而言,这是API管理器代码中的拼写错误。可以说该部分与App Transport Security Settings相关联。

刚刚将受保护的协议从httpS://更改为http://,错误:

  

NSURLErrorDomain Code = -999&#34;已取消&#34;

消失了,一切正常

+如果你有类似的问题。请务必与后端专家讨论此问题,他们会为您的应用程序处理服务器或API配置。这意味着服务器没有有效的安全证书。也许你仍然需要一个安全的连接。或者此专家可以再次从http://httpS://重新配置所有内容,并且我不确定(未检查)在您已使用非代码的代码中这是否会再次起作用安全http://连接。

答案 4 :(得分:0)

[最初的OP问题可能没有提及Cordova,但是在搜索该问题时,该链接在搜索结果中非常高]

对于我的 Cordova项目(或类似项目),事实证明这是一个插件问题。确保您没有丢失任何插件,并确保正确安装它们而不会出现问题。

最简单的验证方法是通过重新创建Cordova项目cordova create <path>)和所需的平台(cordova platform add <platform name>)来重新开始,并在每个插件中添加详细标志(--verbose),以便您可以在下载插件,将其添加到项目并为每个平台安装(cordova plugin add cordova-plugin-device --verbose)时在控制台日志中查看是否出现任何问题

回顾: cordova create <path> cordova platform add <platform name> cordova plugin add cordova-plugin-device --verbose