ios - AFNetworking AFHTTPClient AFJSONRequestOperation 不使用 JSON 操作
<p><p>我关注了这个截屏视频... <a href="http://nsscreencast.com/episodes/6-afnetworking" rel="noreferrer noopener nofollow">http://nsscreencast.com/episodes/6-afnetworking</a> </p>
<p>我的单例 <code>AFHTTPClient</code> 代码是...</p>
<pre><code>+ (MyClient *)sharedInstance
{
static dispatch_once_t once;
static MyClient *myClient;
dispatch_once(&once, ^ { myClient = [ initWithBaseURL:];});
return myClient;
}
- (id)initWithBaseURL:(NSURL *)url
{
self = ;
if (self) {
// these are not actual values but I am setting default headers.
;
;
;
;
;
;
];
}
return self;
}
</code></pre>
<p>然后我像...一样执行它</p>
<pre><code>[ getPath:@"blah.php" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSMutableArray *stats = ;
// it crashes on the next line because responseObject is NSData
for (NSDictionary *dictionary in responseObject) {
CCStatistic *stat = [ initWithDictionary:dictionary];
;
}
self.stats = stats;
;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error retrieving!");
NSLog(@"%@", error);
}];
</code></pre>
<p>一切正常。我已经用 Charles 拦截了它,它正在发送正确的请求并接收正确的 JSON,但该操作不是 JSON 操作。</p>
<p>所以 <code>responseObject</code> 是 <code>NSData</code> 而不是我期望的 <code>JSON 对象</code>。</p>
<p>我错过了使用 JSON 操作的任何配置吗?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>在您的情况下,决定请求是否可由 JSON 操作处理的代码行如下:</p>
<pre><code>return [ intersectsSet:AFContentTypesFromHTTPHeader()];
</code></pre>
<p>如解释 <a href="https://stackoverflow.com/a/9163845/846273" rel="noreferrer noopener nofollow">here</a>通过 Mattt Thompson(<code>AFNetworking</code> 的作者),您必须将请求的 <code>Accept</code>header 设置为 <code>application/json</code>。</p>
<p>这并不直观,并且高度依赖于实现,但它确实有效。</p>
<p>添加</p>
<pre><code>;
</code></pre>
<p>到你的客户端初始化,应该没问题,不管路径扩展。</p></p>
<p style="font-size: 20px;">关于ios - AFNetworking AFHTTPClient AFJSONRequestOperation 不使用 JSON 操作,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/18470748/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/18470748/
</a>
</p>
页:
[1]