2014-09-30 2 views
0

AFNetworking을 사용하고 있으며 내 서버에 요청하고 있습니다. 이상적으로 내 서버는 올바른 content-type = application/json 헤더가있는 JSON을 반환합니다.하지만 때로는 문제가 발생하고 POST 요청이 원시 html을 반환합니다. 이 일이 생길 때 나는 html을 문자열로 읽고 싶다. 문제는 AFNetworking이 JSON이나 XML이 아닌 것을 다룰 수 없다는 것입니다. acceptedContentTypes 세트에 이미 text/html을 추가했습니다.AFNetworking은 html로 text/html을 읽지 않습니다. JSON

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    [manager POST:KIWI_URL parameters:postParams success:^(AFHTTPRequestOperation *operation, id objects) { 
     NSLog(objects); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"10error: %@", error); 
    }]; 

답변

2

responseSerializer를 변경하면됩니다. 관리자 초기화 한 후이 코드를 추가

manager.responseSerializer = [AFCompoundResponseSerializer serializer]; 
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; 

성공 블록에서는 사용하여 응답을 읽을 수 있습니다 :

NSLog(@"RESPONSE:\n%@", [[NSString alloc] initWithData:responseObject encoding:1]); 
+0

이 감사합니다. –

+0

다음 질문 : 콘텐츠 유형이 기본값이되도록 설정하는 방법이 있습니까? 나는 그것이 AFNetworking이하도록 설계된 것임을 압니다. 하지만 왜 그들은 text/html에 대한 지원을 추가하지 않았습니까? –

+0

왜 그들이 text/html에 대한 지원을 추가하지 않았는지 알 수 없습니다. 준비 응답 serialzer, f.ex가 많이 있습니다. AFJSONResponseSerializer, AFXMLParserResponseSerializer, AFXMLDocumentResponseSerializer, AFPropertyListResponseSerializer, AFImageResponseSerializer입니다. 필요한 응답 serializer가없는 경우 AFHTTPResponseSerializer에서 상속 한 새 클래스를 만들고 사용자 고유의 응답 serializer를 지정할 수 있습니다. 당신은 AFURLResponseSerialization.m에서 serializers가 정의되어 있고 그것들과 비슷한 새로운 것을 만들 수 있습니다. – lukszar

관련 문제