2017-10-27 3 views
0

Wir sind Domain-Fehler nur auf iOS 8-Versionen und nicht in der Lage, Antwort von API erhalten, aber der gleiche Code funktioniert gut auf iOS 10-Versionen. Ich habe die erforderlichen Informationen unten beigefügt, überprüfen Sie bitte und lassen Sie mich wissen, ob irgendeine Lösung.API Domain Fehler auf iOS 8 nicht auf iOS 10 Version? (AFNetworking)

AFNetworking Version: 3.1.0

ERROR:

" Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: unauthorized (401)" UserInfo=0x7fd440dc6e00 {com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x7fd44586cbb0> { URL: http://......../users/login } { status code: 401, headers { 
"Accept-Ranges" = none; 
Connection = "keep-alive"; 
"Content-Length" = 381; 
"Content-Type" = "text/html; charset=iso-8859-1"; 
Date = "Fri, 27 Oct 2017 10:17:40 GMT"; 
"Keep-Alive" = "timeout=5, max=100"; 
"Proxy-Support" = "Session-Based-Authentication"; 
Server = Apache; 
Via = "HTTP/1.1 sophos.http.proxy:3128"; 
"Www-Authenticate" = "Basic realm="Restricted""; 
} }" 

Code:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
[manager POST:url parameters:parameters 
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) 
{ 
} progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) 
{  
NSLog(@"responseObject %@",responseObject); 
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) 
{ 
NSLog(@"err : %ld",(long)[error code]); NSLog(@"err : %@",[error description]); 
}]; 

API: HTTP (Entwicklung)

wir ATS Schlüssel hinzugefügt haben,

<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 

in plist.

Bitte lassen Sie mich wissen, wenn eine Lösung.

Danke!

Antwort

0

Verwenden Sie diesen Code anstelle des Codes

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 
manager.requestSerializer = [AFHTTPRequestSerializer serializer]; 

[manager POST:strUrl parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) { 
    NSError * error=nil; 

    NSLog(@"Decoded: %@", responseObject); 
    NSMutableDictionary * parsedData = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:&error]; 

completionHandler:Callback(parsedData,nil); 

    NSLog(@"Decoded: %@", parsedData); 

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
completionHandler:Callback(nil,error); 

}]; 
+0

Dank! Ich habe versucht, dass dein Code nicht in iOS 8.2 funktioniert, aber in iOS 10.2 funktioniert er gut. – Gopik

0

ich diesen Code hoffen für ios 8 oder 10 arbeitet

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
[manager setResponseSerializer:[AFHTTPResponseSerializer serializer]]; 

[manager POST:stUrl parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    if([responseObject isKindOfClass:[NSDictionary class]]) { 
     if(success) { 
      success(responseObject); 
     } 
    } 
    else { 
     NSDictionary *response = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; 
     if(success) { 
      success(response); 
     } 
    } 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
    if(failure) { 
     failure(error); 
    } 
}]; 
+0

Entschuldigung, wir verwenden AFNetwork Version 3.1.0. Es gibt keinen AFHTTPRequestOperationManager mehr. Wir sollten stattdessen AFFTTPSessionManager verwenden. – Gopik

Verwandte Themen