带有 AFNetworking 的 iOS POST:NSLocalizedDescription=请求失败:内部服务器错误 (500)

Posted

技术标签:

【中文标题】带有 AFNetworking 的 iOS POST:NSLocalizedDescription=请求失败:内部服务器错误 (500)【英文标题】:iOS POST with AFNetworking : NSLocalizedDescription=Request failed: internal server error (500) 【发布时间】:2014-07-24 00:48:16 【问题描述】:

我有一个 UITextField,我想在 UITextField 中写一些东西时更新我的​​服务器,并且 按更新按钮,我使用了 AFNetworking,但出现错误:

 Domain=com.alamofire.error.serialization.response Code=-1011 
 "Request failed: internal server error (500)
 status code: 500, headers 
"Access-Control-Allow-Headers" = "Origin, X-Requested-With, Content-Type, Accept";
"Access-Control-Allow-Methods" = "OPTIONS,GET,POST,PUT,DELETE";
"Access-Control-Allow-Origin" = "*";
Connection = "keep-alive";
"Content-Type" = "text/plain";
Date = "Thu, 24 Jul 2014 00:41:56 GMT";
Server = Cowboy;
"Transfer-Encoding" = Identity;
Via = "1.1 vegur";
"X-Powered-By" = Express;
 , NSLocalizedDescription=Request failed: internal server error (500)

这是我的更新按钮代码:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];


NSDictionary *params = @ @"status" :_status;


[manager POST:BASE_URL parameters:params
      success:^(AFHTTPRequestOperation *operation, id responseObject)
 
     NSLog(@"JSON: %@", responseObject);
 
      failure:
 ^(AFHTTPRequestOperation *operation, NSError *error) 
     NSLog(@"Error: %@", error);
 ];

感谢任何帮助!

【问题讨论】:

这是一个服务器错误,因此您的服务器可能有问题,而不是客户端。检查您的服务器日志以了解发生了什么。这不是 ios 问题。 您的服务器是否期望 Content-Type 为 "text/plain" 或 "application/json" ?您的 iOS 代码显示您正在使用 AFJSONRequestSerializer(它将获取您的参数并将它们作为 JSON 而不是纯文本发送)但您的服务器响应说“Content-Type”应该(?)是“text/plain”? @Zhang 我有确切的问题,我知道我的服务器需要“文本/纯文本”,但我无法通过作为 NSDictionary 发送来接受我的有效 JSON。我遇到了同样的错误(请求失败:内部服务器错误(500))。那我怎样才能让我接受我的json你能帮我吗?提前致谢。 【参考方案1】:

错误代码,-1011 表示kCFURLErrorBadServerResponse(来自docs)。您的 Web 服务 (API) 为您提供响应,AFNetworking 的请求/响应序列化程序不知道。请您的开发团队查看并更正错误。

【讨论】:

【参考方案2】:

从您的代码中删除这一行:

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

并将您的 requestSerializer 更改为:[AFHTTPRequestSerializer serializer];

这在我的应用程序中运行良好。

【讨论】:

这在很多层面上都是错误的。您不能将请求序列化程序分配给管理器的响应序列化程序。 并不是将请求序列化程序分配给响应序列化程序。

以上是关于带有 AFNetworking 的 iOS POST:NSLocalizedDescription=请求失败:内部服务器错误 (500)的主要内容,如果未能解决你的问题,请参考以下文章

在带有 AFnetworking 的 iOS 应用程序上使用 cookie

带有 AFNetworking 的 iOS POST:NSLocalizedDescription=请求失败:内部服务器错误 (500)

iOS- AFNETWORKING 2.0 -AFHTTPRequestOperationManager - POST-MULTIPART-REQUEST

iOS 从带有 JSON 参数的 AFNetworking HTTP POST 方法获取 JSON 响应

带有 XMLParser 的 AFNetworking HTTPClient 子类

使用 AFNetworking 在 iOS 8 中登录时解析服务器提供未经授权的 (401)