반응형
일반적으로 사용하던 브라우저에서 User-Agent를 정의하는 방법은 더 이상 사용할 수 없게 되었습니다.
그렇기 때문에 다음과 같은 방법으로는 더이상 User-Agent를 변경할 수 없습니다.
Image.network(
'https://example.com/image.jpg',
headers: {
'User-Agent': 'Your User Agent',
},
...
);
그렇기 때문에 브라우저가 아닌 앱 자체에서 User-Agent를 변경해서 통신을 해야하는데
HttpOverrides를 사용하면 그것을 할 수 있습니다.
HttpOverrides를 사용하여 User-Agent 변경하기
다음과 같은 클래스를 정의합니다.
import 'dart:io';
class MyHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext? context) {
return super.createHttpClient(context)
..userAgent =
'user-userAgent';
}
}
주의할 점은 반드시 'dart:io';를 import 해줘야 한다는 것입니다.
참고로 ..userAgent에서 ..의 의미는 코틀리의 apply 확장 함수와 같은 역할을 합니다.
즉, 위 코드를 코틀린으로 써보면 다음과 같이 쓸 수 있습니다.
return super.createHttpClient(context).apply{
userAgent =
'your-userAent'
}
그리고 main() 함수에 다음과 같이 정의해주면됩니다.
void main() {
HttpOverrides.global = MyHttpOverrides();
runApp(const MyApp());
}
이렇게 하면 http로 하는 모든 통신에 해당 User-Agent를 사용하여 통신할 수 있게 할 수 있습니다.
하지만, 모든 http 통신이 아니라 일부의 통신만 실현하고 싶을 때는 어떻게 하면될까요?
바로 HttpOverrides.current를 사용하면됩니다.
HttpOverrides.current는 해당 코드가 있는 부분만 적용되도록 하는 코드입니다.
예를 들면 다음과 같습니다.
HttpOverrides.runWithHttpOverrides(() {
HttpOverrides.current = MyHttpOverrides();
// 코드 블록 내에서 커스텀 HTTP 동작을 적용
// ...
}, MyHttpOverrides());
이와 같은 방법으로 User-Agent를 설정할 수 있습니다.
반응형
'플러터(flutter)' 카테고리의 다른 글
Flutter 기초 - SharedPreference 사용 방법 (0) | 2023.05.28 |
---|---|
플러터 기초 - PageRouteBuilder를 사용해서 화면 전환하기 (0) | 2023.05.14 |
플러터 기초 - ListView 위젯 사용하기 (0) | 2023.05.13 |
플러터 기초 - FutureBuilder를 사용한 비동기 작업 수행 (0) | 2023.05.12 |
플러터 기초 - https로 데이터 받고 JSON으로 변환하기 (0) | 2023.04.28 |
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글