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

投稿者: | 2014年6月25日
この記事は公開されてから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です。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください