makotton.com

AFNetworkingにおいてacceptableContentTypesを指定してもRequest failedになる

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

[code language=”objc”]
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);
}];
[/code]

このようなコードを実行した結果、

[bash gutter=”0″]
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}]
[/bash]

このようなエラーが返ってきました(*****************はURLですが、ここでは伏字にしてあります)。このエラーは、acceptableContentTypesで指定したコンテンツタイプとレスポンス側のコンテンツタイプが一致していないのが原因です。エラーメッセージをよく見ましょう。

[adsense]

[bash gutter=”0″]
"Content-Type" = "text/xml; charset=utf-8";
[/bash]

コンテンツタイプは”text/xmlのようです。

[code language=”objc” highlight=”3″]
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/xml"];
[/code]

このように修正すればOKです。

モバイルバージョンを終了