【问题标题】:How to set content-type in AFnetworking如何在 AFnetworking 中设置内容类型
【发布时间】:2014-09-11 09:36:58
【问题描述】:

我在使用 AFNetworking 时遇到问题。我无法将content-type 设置为application/json。我能怎么做?我尝试了很多解决方案,但没有人奏效。这是我的代码:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  if (self.enableBasicAuth){
    [manager setRequestSerializer:[AFHTTPRequestSerializer serializer]];
    [manager.requestSerializer setAuthorizationHeaderFieldWithUsername:[[SOWMerchant merchant]     username] password:[[SOWMerchant merchant] password]];
  }
  [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
  manager.responseSerializer = [AFJSONResponseSerializer serializer];
  [manager POST:[NSString stringWithFormat:@"%@", url] parameters:postData success:^(AFHTTPRequestOperation *operation, id responseObject) {
    [self onSuccessResponse:responseObject request:operation];
  } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    [self onError:error request:operation];
  }];

我收到此回复

{ URL: https://sbengtest.spotonway.com:9099/v1.0/merchant/check }, response: <NSHTTPURLResponse:  0x10aa20530> { URL: https://sbengtest.spotonway.com:9099/v1.0/merchant/check } { status code: 400,     headers {
Connection = "keep-alive";
"Content-Length" = 192;
"Content-Type" = "text/html";
Date = "Sun, 20 Jul 2014 22:34:59 GMT";
Server = "nginx/1.2.1";
} }>

更新:

我试着添加这个

AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer];

[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];

operationManagerInstance.requestSerializer = requestSerializer;

我的应用程序崩溃

更新 2: 有用。我删除了这一行

[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];

【问题讨论】:

  • 您是否尝试使用AFJSONRequestSerializer 它应该自动设置正确的内容类型?
  • 请发布响应正文和您发送的所有请求标头。可能是接受标头而不是内容类型存在问题。
  • 我怎样才能得到它?但是,如果我在没有 sepcify 内容类型的情况下向邮递员发出请求(默认为 text/html),我会得到状态代码 400 bad request 400 Bad Request

    Bad Request

    浏览器(或代理)发送了此服务器无法理解的请求。

  • 如果我不能设置内容类型,你知道另一种方法来做http请求和处理状态码和错误吗??
  • 我遇到了同样的问题,但无法解决。在 Postman 中,响应回来得很好。在应用程序中,应用程序/json 被解释为 text/plain 我花了几个小时试图弄清楚这一点并且不知道问题是什么。

标签: ios objective-c json afnetworking content-type


【解决方案1】:

这对我有用!

[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];

【讨论】:

    【解决方案2】:

    此代码工作

    目标-c

    manager.responseSerializer.acceptableContentTypes=[NSSet setWithObject:@"text/html"];
    

    迅速

    manager.responseSerializer.acceptableContentTypes=NSSet (object: "text/html") as Set<NSObject>
    

    【讨论】:

      猜你喜欢
      • 2012-02-28
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 2010-12-29
      相关资源
      最近更新 更多