objective-c - 使用 AFHTTPClient 将 JSON 作为 POST 请求的主体发布

标签 objective-c ios afnetworking

我正在尝试使用 AFNetworking 找到一种方法,将 Content-Type header 设置为 application/json 并在正文中使用 JSON 进行 POST。我在文档中看到的方法(postPath 和 requestWithMethod)都采用参数字典,我假设它是用标准形式语法编码的。有谁知道指示 AFHTTPClient 对正文使用 JSON 的方法,还是我需要自己编写请求?

最佳答案

我继续从他们的 master branch 查看了最新的 AFNetworking .开箱即用,我能够获得所需的行为。我看了看,这似乎是最近的更改(10 月 6 日),因此您可能只需要提取最新的。

我写了下面的代码来发出请求:

AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://localhost:8080/"]];
[client postPath:@"hello123" parameters:[NSDictionary dictionaryWithObjectsAndKeys:@"v1", @"k1", @"v2", @"k2", nil] 
         success:^(id object) {
             NSLog(@"%@", object);
         } failure:^(NSHTTPURLResponse *response, NSError *error) {
             NSLog(@"%@", error);
         }];
[client release];

在我的代理下我可以看到原始请求:

POST /hello123 HTTP/1.1
Host: localhost:8080
Accept-Language: en, fr, de, ja, nl, it, es, pt, pt-PT, da, fi, nb, sv, ko, zh-Hans, zh-Hant, ru, pl, tr, uk, ar, hr, cs, el, he, ro, sk, th, id, ms, en-GB, ca, hu, vi, en-us;q=0.8
User-Agent: info.evanlong.apps.TestSample/1.0 (unknown, iPhone OS 4.3.2, iPhone Simulator, Scale/1.000000)
Accept-Encoding: gzip
Content-Type: application/json; charset=utf-8
Accept: */*
Content-Length: 21
Connection: keep-alive

{"k2":"v2","k1":"v1"}

从 AFHTTPClient 源码可以看出,JSON 编码是基于 line 170 的默认编码, 和 line 268 .

关于objective-c - 使用 AFHTTPClient 将 JSON 作为 POST 请求的主体发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943080/

相关文章:

objective-c - 在 iMessage Extension 中点击消息时未调用 DidSelect 方法

ios - 想通过xcode开启定位服务

ios - Xcode 变得很慢,我无法再使用实际设备(模拟器没问题)

ios - iOS 上的 Chrome 是否支持文件系统 API

ios - CoreBluetooth "willRestoreState"- 究竟应该在那里做什么?

ios - 如何使用 AFNetwork 刷新或取消服务器调用(GET/POST)?

iphone - 如何将自己的图像添加到 PhotoScroller 示例中?

swift - 引用自身时 AFNetworkReachabilityManager EXC_BAD_ACCESS swift

ios - AFNetworking 自动保存 Cookie

ios - 我是否需要在 AFNetworking Reachability block 中引用 self with weak