2
학교의 인트라넷에 연결하려고합니다. 다트 이외의 것으로 연결하는 것은 가능합니다 (Python, PHP, curl -s -L "https://intra.42.fr/?format=json"
등).SecureSocket을 사용하여 HandshakeException을 수정하는 방법은 무엇입니까?
그러나 Dart VM은 내 학교에서 사용중인 TLS 인증서가 불량하다고 간주합니다. 이 코드 :
# pubspec.yaml
name: handshake-fail
dependencies:
http: any
import 'package:http/http.dart' as http;
main() {
var client = new http.Client();
client.post('https://intra.42.fr/?format=json', body: {"login": "test", "password": "test"})
.then((response) => print(response.body)
);
}
나는 다음과 같은 예외가 :
Uncaught Error: HandshakeException: Handshake error in client (OS Error: Peer's Certificate issuer is not recognized., errno = -8179)
Unhandled exception:
HandshakeException: Handshake error in client (OS Error: Peer's Certificate issuer is not recognized., errno = -8179)
#0 _rootHandleUncaughtError.<anonymous closure>.<anonymous closure> (dart:async/zone.dart:700)
#1 _asyncRunCallbackLoop (dart:async/schedule_microtask.dart:23)
#2 _asyncRunCallback (dart:async/schedule_microtask.dart:32)
#3 _asyncRunCallback (dart:async/schedule_microtask.dart:36)
#4 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:119)
질문 버그 리포트 that suggests에 Bypass Certificate Error Using Http 포인트 :
수신 거부 이온 매개 변수를 [
SecureSocket
].initialize
으로 설정하면 인증서 데이터베이스 (cert9.db
및key4.db
이 들어있는 디렉토리)와 내장 된 잘 알려진 권한을 사용할 지 여부를 지정할 수 있습니다.
내 질문은 어떻게 그럴 수 있습니까?
;'로 콜백. 불행하게도이 해결책은'http'가 아니라'HttpClient'에서만 작동합니다. – Diti