带有文本/纯文本响应的 API 因“不可接受的内容类型”而失败

Posted

技术标签:

【中文标题】带有文本/纯文本响应的 API 因“不可接受的内容类型”而失败【英文标题】:API with text/plain response failed with 'unacceptable content-type' 【发布时间】:2016-08-31 11:35:57 【问题描述】:

我正在尝试执行GET 请求,该请求以“text/plain”响应

请求失败,出现错误“不可接受的内容类型:文本/纯文本”。

所以我将AcceptableContentType 设置为"text/plain" 并创建了一个 responseSerializerwithNSJSONReadingAllowFragments`。

但请求也失败并出现错误。

NSCocoaErrorDomain" - 代码:3840" : "字符 0 周围的值无效。"

      NSString *requestUrl = [NSString
                          stringWithFormat:@"%@%@",kServerURL,myURL];

  AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

  manager.requestSerializer = [AFJSONRequestSerializer serializer];
  manager.responseSerializer = [AFJSONResponseSerializer
      serializerWithReadingOptions:NSJSONReadingAllowFragments];

  [manager.responseSerializer
      setAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];
  [manager GET:requestUrl
      parameters:nil
      progress:nil
      success:^(NSURLSessionTask *task, id responseObject) 
        NSLog(@"JSON: %@", responseObject);
      
      failure:^(NSURLSessionTask *operation, NSError *error) 
        NSLog(@"Error: %@", error);
      ];

【问题讨论】:

隐藏 manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; [manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];并添加 manager.requestSerializer = [AFHTTPRequestSerializer 序列化器]; 没有它们,它失败了'JSON文本没有以数组或对象和允许未设置片段的选项开始'所以我添加了它们。 并且没有 [manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObject:@"text/plain"] 失败并显示“请求失败:不可接受的内容类型:文本/纯文本” 你能更新一次问题吗 (Cocoa error 3840.)" (Invalid value around character 0.) AFNetworking的可能重复 【参考方案1】:

在这个地方

manager.requestSerializer = [AFJSONRequestSerializer serializer];
 manager.responseSerializer = [AFJSONResponseSerializer
  serializerWithReadingOptions:NSJSONReadingAllowFragments];
[manager.responseSerializer
  setAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];

使用

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.requestSerializer = [AFHTTPRequestSerializer serializer];

【讨论】:

以上是关于带有文本/纯文本响应的 API 因“不可接受的内容类型”而失败的主要内容,如果未能解决你的问题,请参考以下文章

代码=-1016“请求失败:不可接受的内容类型:文本/纯文本”用户信息=0x7a2da380

通过 Gmail API 发送带有纯文本回退的 HTML 电子邮件

AFNetworking 2.0:NSLocalizedDescription=请求失败:不可接受的内容类型:文本/html

“请求失败:不可接受的内容类型:文本/html”使用 AFNetworking 2.0

Swift 项目中的 AFNetorking ——“错误:请求失败:不可接受的内容类型:文本/html”

使用纯 Windows API 设置 StaticText 控件文本,无 MFC