Iphone 我怎样才能避开这个连接错误?
我目前正在构建一个iOS应用程序,它使用Kosmaczewski的Objective-C REST客户端/包装器连接到公共API 此公共API使用HTTPS上的基本身份验证 我遇到的问题是,当我试图使用包装器的接口提供用户名/密码时,它崩溃了。在进行了一些搜索之后,我相信这与以下两个线程中讨论的一个bug有关:Iphone 我怎样才能避开这个连接错误?,iphone,objective-c,ios4,nsurlconnection,Iphone,Objective C,Ios4,Nsurlconnection,我目前正在构建一个iOS应用程序,它使用Kosmaczewski的Objective-C REST客户端/包装器连接到公共API 此公共API使用HTTPS上的基本身份验证 我遇到的问题是,当我试图使用包装器的接口提供用户名/密码时,它崩溃了。在进行了一些搜索之后,我相信这与以下两个线程中讨论的一个bug有关: 目前,为了继续开发,我在URL中以以下格式提供用户名/密码: 我真的需要找到一个解决方法来正确的解决这个问题。我不喜欢通过生成base64编码字符串并修改身份验证头来绕过它。我也
多谢 虽然您不想离开包装器类,但这听起来像是包装器类中的一个bug。如果NSUrlConnection单独使用,则不会出现此问题,而且它也非常容易实现。下面是一些示例代码,用于处理使用HTTP身份验证的REST服务(如果您选择使用该路径)。很简单
-(void)makeConnection{
NSURL *statusURL = [[NSURL alloc] initWithString:@"URLHERE"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:statusURL];
//change this to GET/PUT/POST/whatever you need
[request setHTTPMethod:@"PUT"];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[statusURL release];
[request release];
[conn start];
[conn release];
responseData = [[NSMutableData alloc] init];
}
-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
if ([challenge previousFailureCount] == 0)
{
NSLog(@"Sending credentials");
NSURLCredential *newCredential;
newCredential = [NSURLCredential credentialWithUser:@"USERNAME" password:@"PASSWORD" persistence:NSURLCredentialPersistencePermanent];
[[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
}
else
{
[[challenge sender] cancelAuthenticationChallenge:challenge];
// inform the user that the user name and password
// in the preferences are incorrect
NSLog(@"credentials are no good :(");
}
}
我会避免使用包装器,因为URL加载系统本身非常强大,引入更多的复杂性总是会引入更多的bug:)
有关更多信息: