この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/rss+xml"]; [manager GET:@"*****************" parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"responseObject = [%@]", responseObject); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"Error = [%@]", error); }];
このようなコードを実行した結果、
Error = [Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/xml" UserInfo=0x14e40ff0 {NSErrorFailingURLKey=*****************, com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x14e801f0> { URL: ***************** } { status code: 200, headers { Connection = close; "Content-Type" = "text/xml; charset=utf-8"; Date = "Wed, 25 Jun 2014 07:06:33 GMT"; Server = Apache; "Transfer-Encoding" = Identity; } }, NSLocalizedDescription=Request failed: unacceptable content-type: text/xml}]
このようなエラーが返ってきました(*****************はURLですが、ここでは伏字にしてあります)。このエラーは、acceptableContentTypesで指定したコンテンツタイプとレスポンス側のコンテンツタイプが一致していないのが原因です。エラーメッセージをよく見ましょう。
"Content-Type" = "text/xml; charset=utf-8";
コンテンツタイプは”text/xmlのようです。
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/xml"];
このように修正すればOKです。