2014-09-12 2 views
5

나는 클라이언트 - 서버 통신과 관련된 응용 프로그램을 작성하고 있습니다. iOS 7.1까지 모든 것이 잘 작동했습니다. 이제 Xcode 6 GM 씨앗이 출시됨에 따라 iOS8 시뮬레이터에서 프로젝트를 만들고 실행하려고했습니다. 그러나 모든 NSURLConnections 시간이 초과 된 것 같습니다. 서버에서 응답을받을 수 없습니다. 이것은 iOS 7 시뮬레이터와 Xcode 6에서 작동합니다.
NSURLSession을 사용하여 문제를 해결할 수 있기를 바랍니다. 그러나 그것은 없다.
도움이 될 것입니다! 다른 사람이이 문제를 겪은 경우 이에 대한 해결 방법이 있으면 알려 주시기 바랍니다.iOS8에서 NSURL 연결 시간 초과

UPDATE :

NSString *authStr = [NSString stringWithFormat:@"%@:%@", username, password]; 
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *authValue = [NSString stringWithFormat: @"Basic %@",[authData base64EncodedStringWithOptions:0]]; 
[inURLRequest setValue:authValue forHTTPHeaderField:@"Authorization"]; 

가 inURLRequest 이미 원하는 URL로 iniatlized되어 있습니다 :
이것은 내가 사용한 코드입니다.
다음은 inURLRequest를 사용하여 평상시대로 트랜잭션을 시작합니다. 예를 들어, NSURLSession의 경우이 요청 개체를 사용하여 다운로드 작업을 만들고 API를 resume으로 호출하십시오.

답변

1

글쎄, 나는이 문제에 대한 수정을 발견

하지 write 제로 시간을

이 이벤트에 대한 응답으로 두 번 이상하지 write 더 많은 일을 할 (또는 그 밖의 다른 hasSpaceAvail 이벤트를받지 않습니다) .
앱에 각 REST 웹 서비스의 기본 인증이 있습니다. 이는 우리가 챌린지와 함께 자격 증명을 보낸 각 웹 서비스에 대한 인증 요청을 얻는 것을 의미합니다. 요청 헤더의 자격 증명을 암호화 된 형식으로 헤더 필드로 보내도록 변경했습니다.

이것이 iOS 7에서 작동하는 방법과 iOS 8에서 작동하지 않는 방법을 잘 모르겠다.하지만 내 문제가 해결 된 것 같습니다. :).

+0

나에게 설명 코드를 제공해 줄 수 있습니까? –

+1

질문의 업데이트를 참조하십시오. 설명에 관해서는, 나는 BASIC 인증을 처리하는 가장 이상적인 방법은 이것이라고 생각합니다. 그러나 이전 버전의 iOS에서는 NSURLConnection도 챌린지에서 기본 인증을 수행 할 수있었습니다. 이것은 더 이상 분명히 지원되지 않으므로이 코드를 따르십시오. –

+0

@SahityaTarumani 요청이 즉시 시작될 수있는 경우 기본 인증은 iOS 8.1/8.2에서 정상적으로 작동하지만 다른 사용자가 먼저 완료 할 때까지 기다려야하는 경우이 새로운 iOS 8 버그가 나타납니다. – Rob

0

데이터를 NSURLConnection에 스트리밍하는 경우 스트림 이벤트 hasSpaceAvail이 도착할 때 write 새 데이터가 정확히 한 번만 표시되어야합니다. hasSpaceAvail 이벤트를 잘못 처리하면 연결 문제가 발생합니다.