【问题标题】:AFNetworking Square APIAFNetworking 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/。如果您进行更改,请求是否成功?
  • 是的,我也刚刚意识到这一点。还是不行。

标签: curl nsurlconnection afnetworking square square-connect


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 2016-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多