Xcode 9 iOS 11 BoringSSL SSL_ERROR_ZERO_RETURN
iOS에서 실행되는 간단한 프로그램 HelloWorld가 있습니다. 동일한 코드가 오랫동안 잘 실행되었습니다. 최근에 Macbook의 Xcode 9에 연결된 ipad에서 프로그램이 실행될 때 아래와 같은 BoringSSL 오류가 발생합니다. 시뮬레이터에서 프로그램을 실행할 때이 오류가 표시되지 않습니다. iOS는 11.2입니다. Xcode는 9.2입니다.
내 코드에는 BoringSSL에 대한 참조가 없습니다. 그러나 NSMutableURLRequest를 사용하여 서버에 https 호출을합니다. 호출이 잘 작동하고 BoringSSL 메시지를 제외한 모든 것이 잘 작동하는 것 같습니다.
메시지가 나타나는 이유를 디버깅 할 수있는 방법이 있습니까? HellowWorld [466 : 85961],이 두 숫자는 무엇을 의미합니까?
메시지의 의미는 무엇이며 어떻게 피할 수 있습니까?
2017-12-13 15:41:13.486047-0500 HellowWorld[466:85961] [BoringSSL] Function boringssl_session_errorlog: line 2871 [boringssl_session_read] SSL_ERROR_ZERO_RETURN(6): operation failed because the connection was cleanly shut down with a close_notify alert
2017-12-13 15:41:13.486363-0500 HellowWorld[466:85961] [BoringSSL] Function boringssl_session_errorlog: line 2871 [boringssl_session_read] SSL_ERROR_ZERO_RETURN(6): operation failed because the connection was cleanly shut down with a close_notify alert
메시지가 나타나는 이유를 디버깅 할 수있는 방법이 있습니까?
예 , 있습니다 . 아직 언급되지 않은 것이 조금 놀랍습니다.
CFNetwork
Foundation
의 네트워킹 클래스 의 핵심을 처리합니다 .- CFNETWORK_DIAGNOSTICS
환경 변수 를 통한 자세한 로깅 기능 (종종 간과 됨)도 있습니다 .
프로그래밍 방식으로 CFNetwork
진단 로깅 활성화 :
setenv("CFNETWORK_DIAGNOSTICS", "3", 1);
0에서 3까지의 정수 값으로 설정해야합니다. 여기서 0은 꺼져 있고 숫자가 클수록 더 많은 로깅이 제공됩니다. 정상적인 개발 중에 Xcode의 체계 편집기를 통해이 환경 변수를 설정할 수 있습니다. 응용 프로그램은 엑스 코드에서 실행하면 CFNetwork
로그 항목 디버그 콘솔 영역에 표시됩니다 (표시되지 않는 경우, 선택 View
> Debug Area
> Show Debug Area
).
환경 변수는 앱 시작 시퀀스의 시작 부분에 배치되어야합니다. 일반적으로 이것을 main의 시작 부분에 두는 것으로 충분하지만, 사용하는 C ++ 정적 이니셜 라이저가있는 경우 CFNetwork
그 앞에 넣어야합니다.
참고 : Swift에서이 코드는
main.swift
. 기본적으로 Swift 앱에는main.swift
; “The Swift Programming Language”는 어떻게 추가하는지 설명합니다.
* 또한 Swift에서setenv
.
위의 환경 변수를 설정하면 문제가 발생한 위치를 확인하는 데 확실히 도움이되며, 적어도 다소 모호한 오류 메시지를 진단하기 시작할 수있는 시작점이 될 것입니다.
info.plist에 "App Transport Security Settings"키를 추가하여 문제를 해결했습니다. "Allow Arbitrary Loads"가 "Yes"로 설정되어 있는지 확인합니다.
위의 방법이 작동하지 않는 사람들에게는 이것이 내 경우 문제였습니다.
나는 송신 된 GET
JSON의와 요청 요청 본문 사용 Alamofire을 . GET
대신 URL에 쿼리 매개 변수로 매개 변수를 포함 하는 요청으로 변경했습니다 ( GET https://your-api.com/v1/request?param=value
). 그런 다음 완벽하게 작동했습니다.
NSLog를 사용하여 매우 긴 목록을 게시하려고 할 때 비슷한 메시지가 나타납니다. 디버그 콘솔에 오랫동안 목록을 게시 한 다음 목록의 일부를 나열한 다음 몇 개 ...
를 나열하여 그렇지 않은 항목이 더 있음을 보여줍니다. 콘솔에 인쇄하여이 문제를 수정하고 (OBJ-C 사용)이 #define을 VC.m에 추가했습니다.
#define NSLog(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
아마도 신속한 프로젝트와 비슷한 것을 사용할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/47802071/xcode-9-ios-11-boringssl-ssl-error-zero-return
'IT Share you' 카테고리의 다른 글
YouTube iframe API 콘솔 오류를 제거하는 방법-Chrome 콘솔에서 "원본이있는 프레임 차단…" (0) | 2020.12.05 |
---|---|
JAX-RS로 DRY 유지 (0) | 2020.12.05 |
접속사와 패턴 매칭 (PatternA AND PatternB) (0) | 2020.12.05 |
참조 : MySQL 확장을 사용하는 완벽한 코드 샘플은 무엇입니까? (0) | 2020.12.05 |
iPad에서 Javascript 디버깅 (0) | 2020.12.05 |