AFNetworking Square API

Posted

技术标签:

【中文标题】AFNetworking Square API【英文标题】: 【发布时间】:2015-04-19 15:35:26 【问题描述】:

我真的很难过。我需要将此 cURL 命令转换为objective-c。我正在使用 AFNetworking 库来解决这个问题,但它每次都返回错误的请求(错误 400)。非常感谢您的帮助。

cURL 命令

curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer XXXXXXXXXXXXX" -d '"quantity_delta": -5,"adjustment_type": "SALE"' https://connect.squareup.com/v1/me/inventory/00CC0141-C50C-4A7A-9FAA-368EC79DA652

AFNetworking Objective-C 代码

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.requestSerializer setValue:@"Bearer XXXXXXXXXXXXX" forHTTPHeaderField:@"Authorization"];
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

NSDictionary *parameters = @@"quantity_delta": [NSNumber numberWithInt:-1], @"adjustment_type": @"SALE";
NSLog(@"Parameters are %@", parameters);

[manager POST:@"https://connect.squareup.com/v1/me/inventory/00CC0141-C50C-4A7A-9FAA-368EC79DA652" parameters:@@"quantity_delta": [NSNumber numberWithInt:-1], @"adjustment_type": @"SALE" success:^(AFHTTPRequestOperation *operation, id responseObject) 
    NSLog(@"JSON: %@", responseObject);
 failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    NSLog(@"Error: %@", error);
];

【问题讨论】:

AFNetworking 示例中的端点路径显示不正确 - 它包含 /items/ 而不是 /inventory/。如果您进行更改,请求是否成功? 是的,我也刚刚意识到这一点。还是不行。 【参考方案1】:

我是 AFNetworking 库的新手,但我能够通过在上述示例的前两行之间添加粗体行来成功请求:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager 管理器]; [manager setRequestSerializer:[AFJSONRequestSerializer 序列化器]]; [manager.requestSerializer setValue:@"Bearer XXXXXXXXXXXXX" forHTTPHeaderField:@"Authorization"];

似乎默认情况下,AFHTTPRequestOperationManager 使用AFHTTPRequestSerializer,它 正确格式化 JSON 正文。改用 AFJSONRequestSerializer 子类可以解决此问题。

【讨论】:

非常感谢。你让我头疼不已! 对于任何想要它的人,我制作了一个 github 存储库。 github.com/greggmojica/SquareConnect

以上是关于AFNetworking Square API的主要内容,如果未能解决你的问题,请参考以下文章

请解释 Shape r = new Square() 的结果以及为啥 Square 的方法不可用

从 AFNetworking 1.3 迁移到 AFNetworking 2.0 的问题

ios基础篇(三十)—— AFNetworking的使用

hdu 1518 Square

iOS开发网络数据之AFNetworking使用

如何在旧的 AFNetworking 中使用 AFNetworking 2.0+?