2011-01-11 8 views
2

요청에 기본 HTTP 인증 헤더를 추가하고 있지만 AuthString을 Base64로 인코딩해야합니다. 정보, 나는 didReceiveAuthenticationChallenge 생산 과도한 401 오류로 인해 사용할 수 없습니다.iPhone 3.2 Base64 인코딩

아래 코드는 iOS 4.2에서는 제대로 작동하지만 iOS 3.2에서는 작동하지 않습니다 (지원하고 싶습니다). 나는있는 NSData가 'base64Encoding'에 응답하지 않습니다 경고를 얻을 수 위의 내 코드의 첫 번째 줄에서

NSString *authString = [[[NSString stringWithFormat:@"%@:%@", user, password] dataUsingEncoding:NSUTF8StringEncoding] base64Encoding];

authString = [NSString stringWithFormat: @"Basic %@", authString]; 

NSMutableURLRequest* request = 
[[NSMutableURLRequest alloc] initWithURL: url 
          cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
         timeoutInterval: 30]; 

[request setValue: authString forHTTPHeaderField: @"Authorization"]; 

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES]; 

. 내가있는 NSString (authString를) 변환이 클래스를 사용하는 방법을 모른다 ...... http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html

그러나 :

그래서 나는 여기에서 사용자 정의 클래스을 NSData + Base64로 다운로드했습니다. 도와주세요?! NSString *authString = [[[NSString stringWithFormat:@"%@:%@", user, password] dataUsingEncoding:NSUTF8StringEncoding] base64EncodedString];

그러나 나는 다음과 같은 메시지 수 :

나는 다음 코드 줄을 수정해야한다고 생각 응용 프로그램을 종료

* 인해 캐치되지 않는 예외 'NSInvalidArgumentException', 이유에 '- [NSConcreteMutableData base64EncodedString ] : 인스턴스로 전송 된 인식 할 수없는 선택자

가져 오기 또는 다른 것을 놓친 적이 있습니까?

P. 이것은 여기에 나의 첫 번째 질문입니다, 그래서 나에게 쉽게 가라!

답변

2

NSStringNSString 인스턴스를 NSData 인스턴스로 변환하는 데 사용할 수있는 -dataUsingEncoding: 메서드가 있습니다. 그 후 MG의 Base64 카테고리를 사용할 수 있습니다.

+0

이 코드 줄을 이와 같이 변경 하시겠습니까? NSString * authString = [[[NSString stringWithFormat : @ "% @ : % @", 사용자, 암호] dataUsingEncoding : NSUTF8StringEncoding] dataFromBase64String]; 또는 이와 유사합니다 NSString * authString = [[[NSString stringWithFormat : @ "% @ : % @", 사용자, 암호] dataUsingEncoding : NSUTF8StringEncoding] base64EncodedString]; –

+0

정답! 나는 하나의 프로젝트가 다른 프로젝트를 참조하도록했다. 보조 프로젝트에서 작동하도록 만들지는 못했지만 #import "NSData + Base64.h"를 기본 프로젝트 응용 프로그램 접두사 헤더 파일 (.pch)에 넣고 기본 프로젝트에 클래스를 추가하면 처리 할 수있었습니다. . 당신의 도움을 주셔서 감사합니다. –

관련 문제