我试图让一个小型的twitter客户端运行,并在测试需要身份验证的API调用时遇到问题。iPhone上的基本HTTP身份验证
我的密码里有特殊字符,所以当我尝试使用下面的代码时它不起作用。
NSString *post = [NSString stringWithFormat:@"status=%@", [status stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@:%@@%@/statuses/update.json", username, password, TwitterHostname]];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSURLResponse *response;
NSError *error;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
我开始关注base64并将身份验证放入标头。我在他的base64实现中发现了Dave Dribin's的帖子,这似乎是有道理的。但是,当我尝试使用它时,编译器开始抱怨它无法找到openssl库。所以我读了我需要链接到libcrypto库,但似乎并不存在iphone。
我也读过一些人说苹果不会允许使用加密库的应用程序,这对我来说没有任何意义。
所以现在我有点卡住和困惑。在我的应用程序中获得基本身份验证的最简单方法是什么?
干杯
我改变了sendSynchronous调用initWithRequest:要求委托:自我和然后在委托中设置didReceiveAuthenticationChallenge,但没有任何被调用。我尝试了其他NSURLConnection委托方法,他们也没有工作。有任何想法吗? – Meroon 2009-06-14 22:09:35