将基本HTTP身份验证标头添加到AFHttpRequestOperation&下载文件

时间:2012-10-31 03:23:22

标签: ios afnetworking

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

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

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

1 个答案:

答案 0 :(得分: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];

  5. 从那里开始你的设定。您可以使用- setCompletionBlockWithSuccess:failure:,也可以只使用[operation start]并执行其他操作。但是,无论您想要什么,这都可以与您的HTTP标头完美配合。