2017-10-27 11 views
0

iOS 8 버전에서만 도메인 오류가 발생하며 API에서 응답을 얻을 수 없지만 동일한 코드는 iOS 10 버전에서 정상적으로 작동합니다. 아래에 필요한 정보가 첨부되어 있는지 확인하고 어떤 해결책이 있으면 알려주십시오.iOS 8이 아닌 iOS 10 버전의 API 도메인 오류? (AFNetworking)

AFNetworking 버전 : 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 (개발)

우리는 ATS 키를 추가 한

, PLIST에

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

.

해결책이 있으면 알려주십시오.

감사합니다.

답변

0

사용

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

감사합니다! iOS 8.2에서는 작동하지 않지만 iOS 10.2에서는 정상적으로 작동하는 코드를 시도했습니다. – Gopik

0

내가이 코드는 IOS 8 일 희망이 코드 대신 코드 또는 10

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

죄송합니다, 우리는 AFNetwork 버전 3.1.0을 사용하고 있습니다. 더 이상 AFHTTPRequestOperationManager가 없습니다. 대신 AFHTTPSessionManager를 사용해야합니다. – Gopik