2014-10-20 2 views
2

을 반환하는 오류를 처리 :AFNetworking 2.0 - 나는 오류를 반환 할 때하면 다음 반환 것이라는 API에 연결하고 상태 코드 200

{ 
    "success": false, 
    "reason": "Could not authenticate successfully with given credentials", 
    "errorCode": "invalidCredentials" 
} 

그것은 application/json;charset=UTF-8Content-Type200Status Code 있습니다.

현재 네트워크 호출을 할 때 나의 성공 블록은 위와 같이 실제 성공적인 응답 또는 오류가 있는지 파악해야합니다. 위와 같은 응답을 받으면 실패 블록을 호출하도록 할 수 있습니까 (성공 = false)?

참고 : 모든 오류 응답이 success, reasonerrorCode 필드 위와 같은 형식이됩니다.

필요한 경우 내 AFNetworking 코드를 제공 할 수 있지만 실제로는 수행 할 수있는 방법에 대한 몇 가지 포인터 (및 아마도 작은 코드 예제)를 찾고 있습니다.

답변

0

AFHTTPResponseSerializer의 하위 클래스를 만들고 validateResponse:data:error:을 구현하여 응답을 확인할 수 있습니다.

맞춤 AFHTTPResponseSerializer을 사용할 때주의하십시오. 일치하지 않는 웹 API를 사용할 때 문제가 발생합니다 (많은 것으로 나타남). 코드에서이 비 일관성 어딘가에을 설명해야합니다. AFHTTPResponseSerializer은 코드에 다른 추상화 레이어를 도입하여 불일치 문제를 해결할 방법을 결정할 때 상황을 복잡하게 만들 수 있습니다.

+0

이것은 좋은 제안처럼 보입니다. 'validateResponse : data : error :'메소드 내에서 무엇을해야하는지 완전히 이해하지 못하기 때문에 몇 가지 예제 코드 나 튜토리얼/설명에 대한 링크가있을 수 있습니다. – Hodson

0

AFHTTPRequestOperationManager 클래스의 하위 클래스를 만들고 GET/POST 메서드를 재정 의하여 성공 블록에서 이미 미리 정의 된 형식을 처리 할 수 ​​있습니다.

+0

이 접근법을 취하는 경우, [AFNetworking documentation] (http://cocoadocs.org/docsets/AFNetworking/2.4.1/Classes/AFHTTPRequestOperationManager.html)에서'AFHTTPRequestOperationManager'에 제안 된대로'AFHTTPSessionManager'를 하위 클래스 화해야합니까? – Hodson

+0

세션이 필요한 경우 예. 현재 SessionManager에서 작업하지 않으면 요구 사항만으로 소개하지 않습니다. –