AFNetworkingを利用して、GETでプレーンテキストを取得しようとしたらエラーがでてハマったので、対応方法をメモに残します。
結論から述べると、AFHTTPSessionManagerのresponseSerializerにAFHTTPResponseSerializerを指定します。reponseSerializerは、デフォルトでJSON用になっており、JSON以外の文字列を取得すると次のようなエラーが発生するようです。
Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html"
以下のようにする事で、プレーンテキストを読み込めるようになります。
AFHTTPSessionManager* manager = [AFHTTPSessionManager manager];
// ここでserializerをデフォルトから変更している。
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:@"http://192.168.169.170/get_data" parameters:nil success:^(NSURLSessionDataTask* task, id responseObject) {
// responseをUTF-8に変換
NSString* str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"task=%@, response = %@ %@", task, [responseObject class], str);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Login error: %@", error);
}];
AFNetworkingが予めJSON用のSerializerを用意しているのだから、レスポンスをプレーンテキストからJSONに変えた方が良いのかもしれません。。。
参考