2

我在 AFHttpRequestOperation 中找不到任何可以添加 HTTP 标头的 API。看起来 AFHttpClient 具有这种支持,但所有示例似乎都使用 AFHttpClient 来发布数据而不是下载。

如何将自定义 Http 标头或身份验证标头添加到 AFHttpRequestOperation?

另外,有没有办法从内存中的 HTTP 服务器下载数据作为 NSData,而不是在使用 AFHttpRequestOperation 时直接将其写入文件?

4

1 回答 1

6

您是正确的,AFHTTPRequestOperation 中没有直接的方法来添加 HTTP 标头,幸运的是这是故意的。

AFHTTPRequestOperation 的设置一开始可能看起来很麻烦,但一旦你使用它就很有意义。

  1. 创建一个 AFHTTPClient。AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://mysite.com]];

  2. 使用适当的方法在 AFHTTPClient 中设置您的标头:
    [client setDefaultHeader:@"key" value:@"value"];
    [client setAuthorizationHeaderWithUsername:@"username" password:@"password"];
    [client setAuthorizationHeaderWithToken:@"token"];

  3. 使用您的 AFHTTPClient 创建一个 NSURLRequest,这是关键
    NSURLRequest *request = [client requestWithMethod:@"someMethod" path:@"somePath" parameters:nil];

  4. 使用您的 NSURLRequest 创建 AFHTTPRequestOperation
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

从那里你准备好了。您可以使用- setCompletionBlockWithSuccess:failure:,也可以只使用[operation start]并做其他事情。但这应该与您想要的任何 HTTP 标头完美配合。

于 2012-11-13T00:09:35.267 回答