반응형
질문 제목:
POST 요청을 수행하는 동안 Flutter CERTIFICATE_VERIFY_FAILED 오류를 해결하는 방법은 무엇입니까?
질문 내용:
Dart에서 게시물 요청을 보내고 있습니다. Postman과 같은 API 테스트 도구에서 테스트했을 때 응답을 주고 있습니다. 하지만 앱을 실행할 때. 다음과 같은 오류가 발생합니다.
E/flutter ( 6264): HandshakeException: Handshake error in client (OS Error: E/flutter ( 6264): CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:363))
다음은 함수의 코드입니다.
Future getAccessToken(String url) async {
try {
http.post('url',
body: {
"email": "xyz@xyz.example",
"password": "1234"
}).then((response) {
print("Reponse status : ${response.statusCode}");
print("Response body : ${response.body}");
var myresponse = jsonDecode(response.body);
String token = myresponse["token"];
});
} catch (e) {
print(e.toString());
}
전체 오류 본문은 다음과 같습니다.
E/flutter ( 6264): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception: E/flutter ( 6264): HandshakeException: Handshake error in client (OS Error: E/flutter ( 6264): CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:363)) E/flutter ( 6264): #0 IOClient.send (package:http/src/io_client.dart:33:23) E/flutter ( 6264): <asynchronous suspension> E/flutter ( 6264): #1 BaseClient._sendUnstreamed (package:http/src/base_client.dart:169:38) E/flutter ( 6264): <asynchronous suspension> E/flutter ( 6264): #2 BaseClient.post (package:http/src/base_client.dart:54:7) E/flutter ( 6264): #3 post.<anonymous closure> (package:http/http.dart:70:16) E/flutter ( 6264): #4 _withClient (package:http/http.dart:166:20) E/flutter ( 6264): <asynchronous suspension> E/flutter ( 6264): #5 post (package:http/http.dart:69:5) E/flutter ( 6264): #6
_MyLoginFormState.getAccessToken (package:chart/main.dart:74:7) E/flutter ( 6264): <asynchronous suspension> E/flutter ( 6264): #7
_MyLoginFormState.build.<anonymous closure> (package:chart/main.dart:64:29)
해결 답변:
프로젝트에서 전역적으로 이 옵션을 활성화하려면 다음을 수행해야 합니다.
- main.dart 파일에서 다음 클래스를 추가하거나 가져옵니다.
class MyHttpOverrides extends HttpOverrides{
@override
HttpClient createHttpClient(SecurityContext? context){
return super.createHttpClient(context)
..badCertificateCallback = (X509Certificate cert, String host, int port)=> true;
}
}
- 기본 함수에서 함수 정의 뒤에 다음 줄을 추가합니다.
HttpOverrides.global = MyHttpOverrides();
이 댓글은 이 문제를 통과하는 데 매우 도움이 되었으며, 참고하시기 바랍니다...
이것은 개발 모드에 있는 동안 사용해야 합니다. 프로덕션으로 릴리스하려는 경우에는 이 작업을 수행 하지 마십시오 . 이 답변의 목적은 개발을 조금 더 쉽게 만드는 것입니다. 프로덕션의 경우 인증서 문제를 수정하고 사용해야 합니다. 귀하의 사례에 도움이 될 수 있으므로 이에 대한 다른 답변을 확인하십시오.
반응형
'expert' 카테고리의 다른 글
Cloud Firestore를 업데이트한 후: '[]' 연산자가 '객체' 유형에 대해 정의되지 않았습니다. 연산자 '[]'를 정의해 보세요. (0) | 2023.01.28 |
---|---|
오류: iOS에서 flutter를 실행할 때 'Flutter/Flutter.h' 파일을 찾을 수 없습니다. (0) | 2023.01.28 |
Firebase 앱 '[DEFAULT]'이(가) 생성되지 않았습니다. Flutter 및 Firebase에서 Firebase.initializeApp()을 호출하세요. (0) | 2023.01.28 |
null 값에 사용되는 null 검사 연산자 (0) | 2023.01.28 |
인수 유형 'String'은 매개변수 유형 'Uri'에 할당할 수 없습니다. (0) | 2023.01.28 |
댓글