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 的方法不可用