简体   繁体   English

无法在AFNetworking AFHTTPRequestOperationManager中设置内容类型

[英]Unable to set content type in AFNetworking AFHTTPRequestOperationManager

I have a web-service which requires Content-Type = application/x-www-form-urlencoded. 我有一个Web服务,需要Content-Type = application / x-www-form-urlencoded。 I have set the headers but it does not changes as I can see in the request logs. 我已经设置了标题,但它没有像我在请求日志中看到的那样发生变化。 Below is the code and request log 下面是代码和请求日志

    NSURL *baseURL = [NSURL URLWithString:@"http://example.net/api/"];

    // Initialize Request Operation Manager
    AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL];

    // Configure Request Operation Manager
    [manager setResponseSerializer:[AFJSONResponseSerializer serializer]];
    manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"application/x-www-form-urlencoded"];

    // Send Request
    [manager GET:@"Account/Register" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        // Process Response Object
        NSLog(@"Register Response: %@",responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        // Handle Error
        NSLog(@"Register Response Error: %@",[error description]);
    }];

But when I look into the request, Content-Type is not changed. 但是当我查看请求时,Content-Type不会更改。 Here is the request details 这是请求详细信息

    ErrorDomain=AFNetworkingErrorDomainCode=-1011"Request failed: bad request (400)"UserInfo=0x109559a40{
      AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0x109709260>{
        URL: http: //example.net/api/Account/Register
      }{
        statuscode: 400,
        headers{
          "Cache-Control"="no-cache";
          "Content-Length"=142;
          "Content-Type"="application/json; charset=utf-8";
          Date="Mon, 10 Mar 2014 14:30:52 GMT";
          Expires="-1";
          Pragma="no-cache";Server="Microsoft-IIS/8.0";
         "Set-Cookie"="xxxxx;Path=/;Domain=example.net, WAWebSiteSID=xxxxxxx; Path=/; HttpOnly";"X-AspNet-Version"="4.0.30319";"X-Powered-By"="ASP.NET";
        }
      },

  NSLocalizedDescription=Requestfailed: badrequest(400),
  NSErrorFailingURLKey=http: //example.net/api/Account/Register
}

How can I set Content-Type to application/x-www-form-urlencoded? 如何将Content-Type设置为application / x-www-form-urlencoded?

You don't need to set ResponseSerializer to manager. 您不需要将ResponseSerializer设置为manager。 Please user below code will work for you. 请用户在下面的代码将为您服务。

 NSURL *baseURL = [NSURL URLWithString:@"http://example.net/api/"];

// Initialize Request Operation Manager
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL];

// Configure Request Operation Manager
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"application/x-www-form-urlencoded"];

// Send Request
[manager GET:@"Account/Register" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    // Process Response Object
    NSLog(@"Register Response: %@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // Handle Error
    NSLog(@"Register Response Error: %@",[error description]);
}];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM