hoony's web study

728x90
반응형

- Http

기존에 http 요청을 dart에서 하는것에 더불어, 우리는 필히 확인해야 할 것이 있습니다.

요청 url에 대한 타임아웃, 혹은 현재 인터넷 연결이 안되는지에 대해 확인할 필요가 있습니다.

이때, 우리는 TimeoutException, SocketException 을 통해 이를 제어하고

사용자에게 알려줄 수 있습니다.

 

- try ~ on

모두 try ~ catch 구문은 익숙 하실 겁니다.

기존의 Java에서와 마찬가지로 dart 또한 Exception 별로 제어가 가능한데요.아래 소스로 살펴보도록 하겠습니다.

 

Response? response;
Uri url = Uri.parse('ApiUrl');

try {
   response = await http
      .get(url)
      .timeout(const Duration(seconds: 3),
      onTimeout: () {
        throw TimeoutException('Connection Time Out // 3');
      });
} on TimeoutException {
  //Timeout 일 경우
  //사용자에게 Alert을 띄워주거나, 그에 맞는 데이터를 반환 등의 구현
} on SocketException {
  //SocketException 일 경우
  //사용자에게 Alert을 띄워주거나, 그에 맞는 데이터를 반환 등의 구현
} catch(e) {
  //그외 Exception 캐치
  print(e);
}

 

위와 같이, on 키워드로 특정 Exception 을 제어 해줄 수 있습니다.

또한, Timeout의 경우 위에 선언한바와 같이 .timeout() 메서드로 Timeout의 값을 지정해주고

onTimeout을 구현하여 exception을 throw 해주거나, 별도의 기능을 구현해주시면 됩니다.

또한, 휴대폰의 네트워크를 모두 차단해둔 상태로 http 요청할 경우 timeout이 아닌

SocketException 을 발생시킨다는 점 유의 바랍니다!

감사합니다.

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading