NSURLRequest setValue:forHTTPHeaderField:@“Authorization”无法正常工作

时间:2013-08-31 12:42:24

标签: objective-c twitter-oauth nsurlrequest http-authentication nsmutableurlrequest

我尝试使用仅限应用程序身份验证API

对twitter API进行身份验证调用
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] 
                                                       cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
                                                   timeoutInterval:20.0];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"Some App Name" forHTTPHeaderField:@"User-Agent"];
[request setValue:authValue forHTTPHeaderField:@"Authorization"];
[request setHTTPBody:[@"grant_type=client_credentials" dataUsingEncoding:NSUTF8StringEncoding]];

有趣的是, authValue 没有为HTTPHeaderField @“Authorization”设置。因此我的电话当然失败了。所有其他标题字段都已正确设置。

我通过

检查
NSLog(@"Authorization, %@, %@", [request valueForHTTPHeaderField:@"Authorization"], authValue);

返回 @“授权,(null),theCorrectStuff

为什么会这样?我应该能够马上设置,或者我错过了什么?

感谢您的时间和考虑, 费边

1 个答案:

答案 0 :(得分:1)

我有同样的问题。输出你的authValue,它可能包含新行。对于仅执行base64之后的应用程序验证,您需要从authValue中删除新行,否则将不会设置标题字段。

或者只使用已编写的用于Twitter REST API 1.1(https://github.com/nst/STTwitter)的Objective-C库。