2013-05-13 3 views
4

타사 API에 액세스하는 프록시 서버를 만들려고하지만 개발 끝점에 인증서 오류가 있습니다. http.dart를 사용할 때 ssl 오류를 우회 할 수 있습니까?HTTP를 사용하여 바이 패스 인증서 오류

import 'package:http/http.dart' as http; 

Uri url = Uri.parse("https://url-with-ssl-error.com/endpoint"); 
http.get(url).then((response) => print(response.body)); 

여기에 반환 된 오류입니다 : '. 피어의 인증서 발급자가로 표시 사용자가 신뢰할 수없는 한'

Uncaught Error: SocketIOException: RawSecureSocket error (Unexpected handshake error in client) (OS Error: errno = -8172) 
Unhandled exception: 
SocketIOException: RawSecureSocket error (Unexpected handshake error in client) (OS Error: errno = -8172) 
#0  _FutureImpl._scheduleUnhandledError.<anonymous closure> (dart:async/future_impl.dart:207:9) 
#1  Timer.run.<anonymous closure> (dart:async/timer.dart:17:21) 
#2  Timer.run.<anonymous closure> (dart:async/timer.dart:25:13) 
#3  Timer.Timer.<anonymous closure> (dart:async-patch:15:15) 
#4  _Timer._createTimerHandler._handleTimeout (dart:io:6990:28) 
#5  _Timer._createTimerHandler._handleTimeout (dart:io:6998:7) 
#6  _Timer._createTimerHandler.<anonymous closure> (dart:io:7006:23) 
#7  _ReceivePortImpl._handleMessage (dart:isolate-patch:81:92) 
+0

코드의 관련 부분과 정확한 오류를 표시 할 수 있습니까? –

+0

@ZdeslavVojkovic 코드로 내 질문을 편집했고 오류가 –

+0

인 경우 get '앞에'SecureSocket.initialize() '를 추가하십시오. http://stackoverflow.com/questions/13964492/socketioexception-unexpected-handshake-error-in-client 및 http://code.google.com/p/dart/issues/detail?id=7541 –

답변

0

오류 -8172는 것을 의미한다

원시 소켓에 액세스 할 수있는 경우 connect 메서드를 사용하면 onBadCertificate 콜백을 제공하여 잘못된 인증서의 경우 수행 할 작업을 지정할 수 있습니다. 그러나 코드 샘플에 http 개체의 정확한 유형이 무엇인지 확실하지 않으므로이 문제를 해결할 수 있는지 여부를 알 수 없습니다. 나는 그것이 HttpClient 인스턴스일지도 모른다고 생각했지만 get URI를 취하는 메소드가 없으므로 확실하지 않습니다. 자신의 클래스 인 경우 기본 보안 소켓에 액세스 할 수 있으므로 onBadCertificate을 계속 사용할 수 있습니다.

또한 서버 소켓의 경우 암시적인 SecureSocket.initialize() 호출에 의존 할 수 없습니다. call it explicitly with certificate db info이 필요합니다.

+0

죄송합니다, http는 http://pub.dartlang.org/packages/http입니다. –

+0

http 패키지를 살펴 보았지만 잘못된 인증서를 제어하는 ​​방법을 보지 못했습니다. –

+0

http://dartbug.com/new에서 http 패키지의 기능을 요청할 수 있습니다. 감사! –