AFNetworking请求错误代码999

xik*_*may 12 objective-c ios 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);
    }];
}
Run Code Online (Sandbox Code Playgroud)

我已将此代码链接到一个调用此函数的简单Button.

我有另一个应用程序,在红宝石运动中,这项功能的工作被罚款我可以得到没有任何错误的响应.但是使用这个简单的应用程序,我无法做任何请求,他们都返回此错误代码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;
Run Code Online (Sandbox Code Playgroud)

.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);
}];
Run Code Online (Sandbox Code Playgroud)

小智 20

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

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

[securityPolicy setValidatesDomainName:NO];
Run Code Online (Sandbox Code Playgroud)


Ewa*_*lor 10

这是错误-999,而不是999.那就是NSURLErrorCancelled.您的请求已被取消,然后才能完成.

查看您的代码,您不会保留AFHTTPSessionManager *manager任何地方.这意味着经理将在+simpleRequest退货后立即处理.我猜这是取消你的请求的原因.

您需要保存管理器,以使其在请求的整个持续时间内都存在.将它保存在某个地方的财产中.


EFE*_*EFE 3

就我而言,iOS 9 SDK 的“应用程序传输安全性”导致AFNetworking 错误代码:-999。如果您尝试访问没有 SSL 的服务器,请添加密钥,如下面的屏幕截图所示。

在此输入图像描述

  • 这不应该再是一个被接受的答案。从 iOS 10 开始,允许任意加载需要经过 Apple 的审核并获得特定许可。更好的答案是使用 ATS 来允许通过异常加载到 HTTP 位置。查看这篇文章,/sf/ask/2187830781/,了解此问题的真正解决方案。 (4认同)