1. ホーム
  2. アイオス

[解決済み】リクエストに失敗しました: 受け入れられない content-type: text/html AFNetworking 2.0 を使用しています。

2022-04-13 21:21:44

質問

AFNetworkingの新しいバージョン2.0を試しているのですが、上記のようなエラーが出ています。なぜこのようなことが起こるのか、何か心当たりはありますか?以下は私のコードです。

    NSURL *URL = [NSURL URLWithString:kJSONlink];
    NSURLRequest *request = [NSURLRequest requestWithURL:URL];
    AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    op.responseSerializer = [AFJSONResponseSerializer serializer];
    [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
    [[NSOperationQueue mainQueue] addOperation:op];

Xcode 5.0を使用しています。

また、エラーメッセージは以下の通りです。

Error: Error Domain=AFNetworkingErrorDomain Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo=0xda2e670 {NSErrorFailingURLKey=kJSONlink, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0xda35180> { URL: kJSONlink } { status code: 200, headers {
    Connection = "Keep-Alive";
    "Content-Encoding" = gzip;
    "Content-Length" = 2898;
    "Content-Type" = "text/html";
    Date = "Tue, 01 Oct 2013 10:59:45 GMT";
    "Keep-Alive" = "timeout=5, max=100";
    Server = Apache;
    Vary = "Accept-Encoding";
} }, NSLocalizedDescription=Request failed: unacceptable content-type: text/html}

kJSONlinkを使ってJSONを隠したところです。これでJSONが返されるはずです。

どのように解決するのですか?

これは、あなたのサーバーが "text/html" の代わりに、すでにサポートされているタイプを使用します。 私の解決策は "text/html"acceptableContentTypes で設定します。 AFURLResponseSerialization クラスがあります。ただ、"acceptableContentTypes" を検索して、次のように追加します。 @"text/html" を手動で追加してください。

もちろん、サーバーから送られるタイプを変更するのが理想的ですが、そのためにはサーバーチームと話し合う必要があります。