Итак - у меня идентичный код AFNetworking, который при запуске на симуляторе возвращает результаты, как ожидалось, и возвращает мне все надлежащее JSON.AFNetworking 401 на устройстве, работающем на симуляторе
Вскоре, когда я запустил его на устройстве, я получил 401. Теперь я понимаю, что это означает «несанкционированный», но как же он работает абсолютно плавно на симуляторе, а затем дает мне 401 на устройстве?
Код находится ниже и был изменен только для удаления адреса нашего API, который должен оставаться конфиденциальным.
phoneNumber = phoneNumberField.text;
[[NSUserDefaults standardUserDefaults] setObject:phoneNumber forKey:@"phone_number"];
NSString *UDIDstring = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
NSLog(@"UDID: %@",UDIDstring);
NSString *jsonRequest = [NSString stringWithFormat:@"{\"userId\":\"%@\",\"userType\":\"%@\",\"deviceId\":\"%@\",\"deviceType\":\"%@\"}",phoneNumberField.text,@"Number",UDIDstring,@"iPhone"];
NSLog(@"json: %@",jsonRequest);
NSDictionary *stuff = [[NSDictionary alloc] initWithObjectsAndKeys:
phoneNumberField.text, @"userId",
@"Number", @"userType",
UDIDstring,@"deviceId",
@"iPhone",@"deviceType",
nil];
NSLog(@"stuff: %@",stuff);
NSError *error;
NSData *postData = [NSJSONSerialization dataWithJSONObject:stuff options:0 error:&error];
NSString *urlString = @"(hidden for privacy reasons)"
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]
cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
NSString *userpass = [@"vclient:VastV1" base64EncodedString];
NSLog(@"userpass: %@",userpass);
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"Basic: %@",userpass] forHTTPHeaderField:@"Authorization"];
//[request setValue:@"*/*" forHTTPHeaderField:@"Accept"];
[request setValue: @"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
securityPolicy.allowInvalidCertificates = YES;
op.securityPolicy = securityPolicy;
op.responseSerializer = [AFJSONResponseSerializer serializer];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON responseObject: %@ ",responseObject);
[infoLabel setText:@"You have been sent an activation code to the number you used. Please enter it above."];
[signupLabel setText:@"your code:"];
[mainButton setTitle:@"Activate" forState:UIControlStateNormal];
firstSignup=true;
[phoneNumberField setText:@""];
[phoneNumberField setPlaceholder:@"Enter activation code."];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", [error localizedDescription]);
}];
[op start];
Вы используете HTTPS? Это самозаверяющий сертификат? –