수정할 수있는 허용 된 http 상태 코드 목록이 있지만 실패 블록에서 http 상태 코드를 얻을 수 있다면 더 깨끗할 것이라고 생각합니다.
좋아, 작업 객체로 답을 찾았습니다.
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"error code %d",[operation.response statusCode]);
}];
답변
좋아, 작업 객체로 답을 찾았습니다.
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"error code %d",[operation.response statusCode]);
}];
답변
최신 버전의 AFNetworking에서는 오류에서 응답 객체를 검색 할 수 있습니다.
[[[error userInfo] objectForKey:AFNetworkingOperationFailingURLResponseErrorKey] statusCode]
이것은 오류 처리를 더 많이 수행하고 응답 객체를 전달하지 않으려는 경우에 편리합니다.
답변
AFNetworking 3.0 의 경우
failure:^(NSURLSessionTask *operation, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)operation.response;
httpResponse.statusCode;
NSLog(@"status code: %li", (long)httpResponse.statusCode);
}
답변
NSInteger operationStatusCode = [operation.error 코드];
NSInteger httpStatusCode = operation.response.statusCode;
요청이 취소 / 연결 불가능 / 시간 초과 된 httpStatusCode
경우 항상 0
입니다.
또는을 이해하여 문제를 식별 할 수 있습니다 operationStatusCode
. 그것은이다 NSError
개체입니다.
- 요청을 처리 할 네트워크에 도달 할 수 없거나 시간이 초과
operationStatusCode
되거나 네트워크가 없으면이 됩니다-1009
. - 당신이 작업 큐에 취소하는 경우가
operationStatusCode
있을 것입니다-999
.
다른 모든 NSError
코드와 설명은 Apple 문서 에서 확인할 수 있습니다.
답변
Swift 3으로 상태 코드를 얻을 수있었습니다.
((error.userInfo[AFNetworkingOperationFailingURLResponseErrorKey])
as! HTTPURLResponse).statusCode
답변
그것은 나를 위해 일합니다 귀하의 요청에 아래 줄을 추가하십시오
manager.requestSerializer = [AFJSONRequestSerializer 시리얼 라이저];