AFNetworking 2.0的POST请求-AFHTTPSessionManager

伦塔

您好,

我正在努力对REST解析API进行POST请求。我正在使用AFNetworking 2.0。我的AFHTTPSessionManager子类代码如下所示:

+ (ParseAPISession *)sharedSession {
     static ParseAPISession *sharedSession = nil;
     static dispatch_once_t onceToken;
     dispatch_once(&onceToken, ^{
         sharedSession = [[ParseAPISession alloc] initWithBaseURL:[NSURL URLWithString:kSDFParseAPIBaseURLString]];
    });
   return sharedSession;
}

和:

- (id)initWithBaseURL:(NSURL *)url {
    self = [super initWithBaseURL:url];
    if (self) {
       [self.requestSerializer setValue:kSDFParseAPIApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
       [self.requestSerializer setValue:kSDFParseAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
   }

   return self;
}

我在做这样的请求:

[[ParseAPISession sharedSession] POST:@"ClassName" parameters: [NSDictionary dictionaryWithObjectsAndKeys:@"name", @"name", nil] 
                              success:^(NSURLSessionDataTask *task, id abc) {
                                  NSLog(@"%@", abc);
                              } failure:^(NSURLSessionDataTask *task, NSError *error) {
                                  NSLog(@"%@", error);
}];

这样做我总是会遇到这种错误:

错误域= NSCocoaErrorDomain代码= 3840“操作无法完成。(可可错误3840。)”(JSON文本不是以数组或对象开头,并且没有允许设置片段的选项。)UserInfo = 0x8c72420 {NSDebugDescription = JSON文本并非以数组或对象以及允许未设置片段的选项开头。}

由于GET Request就像一个超级按钮一样工作,我很困惑为什么我不能发布某些东西。有人可以让我停顿一下这个问题吗?

最好的祝福!

更新

不幸的是,经过大量测试后,此错误消息不再显示了,不幸的是又出现了:

<NSHTTPURLResponse: 0x8b96d40>
{ URL: https://api.parse.com/1/users }
{ status code: 400, 
headers {
    "Access-Control-Allow-Origin" = "*";
    "Access-Control-Request-Method" = "*";
    "Cache-Control" = "no-cache";
    Connection = "keep-alive";
    "Content-Length" = 130;
    "Content-Type" = "application/json; charset=utf-8";
    Date = "Wed, 30 Oct 2013 20:01:58 GMT";
    Server = "nginx/1.4.2";
    "Set-Cookie" = "_parse_session=BAh7BkkiD3Nlc3Npb25faWQGOgZFRiIlNjIxZjUxMzY3NWVhZWJmMDYyYWYwMGJiZTQ3MThmMWE%3D--851bd31b07e7dba2c5f83bb13a8d801ecbea42c4; domain=.parse.com; path=/; expires=Fri, 29-Nov-2013 20:01:58 GMT; secure; HttpOnly";
    Status = "400 Bad Request";
    "X-Runtime" = "0.060910";
    "X-UA-Compatible" = "IE=Edge,chrome=1";
} }

谁能告诉我状态:400错误的请求告诉我什么以及如何摆脱它?

亚伦·布拉格(Aaron Brager)

此错误表示您的POST请求已通过,服务器已成功向您返回一些数据,这NSJSONSerialization在解析时遇到了麻烦。

您可能需要将其设置AFJSONResponseSerializer为允许JSON片段。

子类init方法中AFHTTPSessionManager

AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
[self setResponseSerializer:responseSerializer];

如果这不起作用,则可能是编码问题。NSJSONSerialization类参考:

数据必须采用JSON规范中列出的5种受支持的编码之一:UTF-8,UTF-16LE,UTF-16BE,UTF-32LE,UTF-32BE。数据可能有或没有BOM。用于解析的最有效编码是UTF-8,因此,如果可以选择对传递给此方法的数据进行编码,请使用UTF-8。

检查服务器发送的编码类型。

最后,您可以在AFNetworking内部设置断点,或者设置AFNetworkActivityLogger,它将记录请求在发送和接收到控制台时的记录。该工具对于调试此类问题非常有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用AFNetworking 2批量处理请求?

来自分类Dev

POST request with AFNetworking 2.0 - AFHTTPSessionManager

来自分类Dev

AFNetworking 2.0 POST请求存在问题

来自分类Dev

如何使用AFNetworking 2设置HTTP请求?

来自分类Dev

在运行AFHTTPSessionManager的AFNetworking 2中设置并发任务的限制

来自分类Dev

如何在AFNetworking的AFHTTPSessionManager中超时或检测响应缓慢?

来自分类Dev

等待AFNetworking GET请求

来自分类Dev

AFNetworking体系结构i386的未定义符号:“ _ OBJC_CLASS _ $ _ AFHTTPSessionManager”

来自分类Dev

AFHTTPSessionManager将正文添加到POST

来自分类Dev

AFNetworking 2 + SwiftyJSON

来自分类Dev

AFNetworking XML请求问题

来自分类Dev

AFNetworking并发Http请求

来自分类Dev

AFNetworking 2空POST响应,但无错误

来自分类Dev

如何通过AFNetworking发送HTTP POST请求?

来自分类Dev

取消AFHTTPSessionManager的先前请求

来自分类Dev

如何在AFNetworking 3.0中使用AFHTTPSessionManager获得下载进度

来自分类Dev

使用NSURLSession复制AFNetworking POST请求

来自分类Dev

AFNetworking 3.x AFHTTPSessionManager和AFURLSessionManager有什么区别?

来自分类Dev

AFNetworking 2.0的POST请求-AFHTTPSessionManager

来自分类Dev

AFNetworking 2-请求失败时无响应正文

来自分类Dev

AFNetworking 2:请求中不包含授权标头

来自分类Dev

关于AFNetworking 2

来自分类Dev

代理中的AFNetworking 2.0 AFHTTPSessionManager性能

来自分类Dev

AFNetworking:创建POST请求,但不运行

来自分类Dev

AFNetworking体系结构i386的未定义符号:“ _ OBJC_CLASS _ $ _ AFHTTPSessionManager”

来自分类Dev

AFNetworking 2.0:为TDD子类化AFHTTPSessionManager导致AFURLRequestSerialization初始化错误

来自分类Dev

取消AFHTTPSessionManager的先前请求

来自分类Dev

AFNetworking发送JSON作为POST请求的参数

来自分类Dev

AFNetworking AFHTTPSessionManager POST调用了两次

Related 相关文章

  1. 1

    如何使用AFNetworking 2批量处理请求?

  2. 2

    POST request with AFNetworking 2.0 - AFHTTPSessionManager

  3. 3

    AFNetworking 2.0 POST请求存在问题

  4. 4

    如何使用AFNetworking 2设置HTTP请求?

  5. 5

    在运行AFHTTPSessionManager的AFNetworking 2中设置并发任务的限制

  6. 6

    如何在AFNetworking的AFHTTPSessionManager中超时或检测响应缓慢?

  7. 7

    等待AFNetworking GET请求

  8. 8

    AFNetworking体系结构i386的未定义符号:“ _ OBJC_CLASS _ $ _ AFHTTPSessionManager”

  9. 9

    AFHTTPSessionManager将正文添加到POST

  10. 10

    AFNetworking 2 + SwiftyJSON

  11. 11

    AFNetworking XML请求问题

  12. 12

    AFNetworking并发Http请求

  13. 13

    AFNetworking 2空POST响应,但无错误

  14. 14

    如何通过AFNetworking发送HTTP POST请求?

  15. 15

    取消AFHTTPSessionManager的先前请求

  16. 16

    如何在AFNetworking 3.0中使用AFHTTPSessionManager获得下载进度

  17. 17

    使用NSURLSession复制AFNetworking POST请求

  18. 18

    AFNetworking 3.x AFHTTPSessionManager和AFURLSessionManager有什么区别?

  19. 19

    AFNetworking 2.0的POST请求-AFHTTPSessionManager

  20. 20

    AFNetworking 2-请求失败时无响应正文

  21. 21

    AFNetworking 2:请求中不包含授权标头

  22. 22

    关于AFNetworking 2

  23. 23

    代理中的AFNetworking 2.0 AFHTTPSessionManager性能

  24. 24

    AFNetworking:创建POST请求,但不运行

  25. 25

    AFNetworking体系结构i386的未定义符号:“ _ OBJC_CLASS _ $ _ AFHTTPSessionManager”

  26. 26

    AFNetworking 2.0:为TDD子类化AFHTTPSessionManager导致AFURLRequestSerialization初始化错误

  27. 27

    取消AFHTTPSessionManager的先前请求

  28. 28

    AFNetworking发送JSON作为POST请求的参数

  29. 29

    AFNetworking AFHTTPSessionManager POST调用了两次

热门标签

归档