【问题标题】:AFNetworking Request failed: unacceptable content-type: text/plain,AFNetworking 请求失败:不可接受的内容类型:文本/纯文本,
【发布时间】:2016-09-27 15:31:15
【问题描述】:

我一直在尝试,但出现错误

NSLocalizedDescription=请求失败:错误请求 (400), com.alamofire.serialization.response.error.data=,NSUnderlyingError=0x7a81aa80 {错误 Domain=com.alamofire.error.serialization.response Code=-1016 "请求 失败:不可接受的内容类型:文本/纯文本” UserInfo={com.alamofire.serialization.response.error.response= { URL: https:///mobile/v1/document/get } { 状态码:400,标题{ "缓存控制" = "无缓存,私有"; 连接=“保持活动”; “内容类型”=“文本/纯文本;字符集=UTF-8”; 日期 =“2016 年 5 月 29 日星期日 20:31:44 GMT”; 服务器 = "nginx/1.4.6 (Ubuntu)"; "Strict-Transport-Security" = "max-age=2592000; includeSubDomains"; “传输编码” = 身份; "X-异常类" = "PM\PFTAPIBundle\Exception\MissingAPIParameterException"; "X-Exception-Message" = "缺少参数:'reference'"; “X-Frame-Options”=SAMEORIGIN; “X-处理时间”=“906.5ms”; } }, NSErrorFailingURLKey=https:///api/mobile/v1/document/get, NSLocalizedDescription=请求失败:不可接受的内容类型: 文本/纯文本,com.alamofire.serialization.response.error.data=}}} 请​​求失败:错误请求(400)

- (void)postResource:(NSString*)resource queryString:(NSDictionary*)queryString withCompletionHander:(CompletionHandlerBlock)completionHandler
{

NSString *qs = [DictionaryUtils convertDictToJSONString:queryString];

//    self.sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
//    self.sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];//[AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];

//    [self.sessionManager.requestSerializer setValue:[NSString stringWithFormat:@"PLSID %@",sessionID] forHTTPHeaderField:@"Authorization"];
resource = [[self.sessionManager.baseURL URLByAppendingPathComponent:@"document/get"] absoluteString];

NSURL *base = [NSURL URLWithString:resource];
NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:base
                                                        cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                                    timeoutInterval:60.0];
[theRequest setHTTPMethod:@"POST"];
[theRequest setValue:mACCEPTVALUE forHTTPHeaderField:mCONTENTTYPELABEL];
if ([[[UserDetails sharedInstance]getUserDetails]objectForKey:mSESSIONIDKEY]) {
    NSString *headerField = [NSString stringWithFormat:@"%@ %@",mSOURCEPLSID,sessionID];
    [theRequest setValue:headerField forHTTPHeaderField:mSOURCEIDENTIFIERHEADER];
}
if(qs != nil) {
    [theRequest setHTTPBody:[qs dataUsingEncoding:NSUTF8StringEncoding]];
}


NSURLSessionDataTask *dataTask = [self.sessionManager dataTaskWithRequest:theRequest completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
    //
    NSLog(@"responseObject %@", responseObject);
    NSLog(@"%@ \n%@",error, [error localizedDescription]); //{Error Domain=kCFErrorDomainCFNetwork Code=-1005 "(null)" UserInfo={_kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-4}}}
}];

[dataTask resume];

}

当我使用邮递员测试 api 并将 Body 中的参数作为 raw 数据 {"reference":{"Id":"User","documentId":"56e0"}} [注意:不在 x-www-form-urlencoded 或form-data]。 It works and getting response with data.

【问题讨论】:

  • 可以看到postman截图显示请求是text/json,而不是text/plain。
  • @Avi 谢谢,但我正在设置内容类型 [theRequest setValue:mACCEPTVALUE forHTTPHeaderField:mCONTENTTYPELABEL];其中 mACCEPTValUE 是 text/json
  • 所以您的问题实际上是如何让 AF 以text/json 发送您的请求,因为您发布的错误清楚地表明它不是。
  • @Avi 是的,Avi。我将参数 {"reference":{"sheetId":"User","documentId":"56e02ac1f045d90f508b45fb"}} 作为原始数据传递
  • 我知道哪里出了问题。错误的不是请求,而是响应。您期待 JSON 响应,但收到 400 响应,其中包含解释错误的文本。如果你解码返回的数据,你会得到HTTP 400 Missing parameter: 'reference'。

标签: ios objective-c iphone serialization afnetworking


【解决方案1】:

如果您使用的是 AFNetworking,请尝试明确接受内容类型

let serviceManager = AFHTTPSessionManager()
serviceManager.responseSerializer.acceptableContentTypes = NSSet(objects: "text/plain", "text/html", "application/json", "audio/wav", "application/octet-stream", "text/javascript") as? Set

这对我有用

【讨论】:

  • 发现错字,应该是application/octet-stream。这需要一些时间才能弄清楚......
猜你喜欢
  • 2014-06-14
  • 2018-05-11
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多