android
12. android 여러가지 공부하기
코코넛딩
2023. 11. 29. 17:40
챗 지피티와 구글 번역기를 사용하여 공부한 것입니다. 틀린 점은 댓글 주세요.
CookieJar
- okhttp3의 interface이다.
- HTTP 쿠키에 대한 정책과 지속성을 제공한다.
- 정책에 따라 이 인터페이스의 구현은 허용할 쿠키와 거부할 쿠키를 선택하는 역할을 담당한다.
- 지속성으로서 이 인터페이스의 구현은 쿠키 저장도 제공해야한다.
loadForRequest(HttpUrl url)
- url에 대한 HTTP요청을 위해 jar에서 쿠키를 로드합니다.
saveFromResponse(HttpUrl url, List<Cookie> cookies)
- jar의 정책에 따라 이 저장소에 대한 HTTP 응답의 쿠키를 저장한다.
- 저장소 : 웹 개발에서 '저장소에 대한 쿠키를 저장한다는 말'은 쿠키를 사용자의 브라우저에 저장한다는 의미
- 쿠키 : 소량의 데이터를 사용자의 컴퓨터에 저장하는 정보
Retrofit
Header
@Headers("accept: application/json", "content-type: application/json")
- accept: application/json
- accept : 이 헤더는 클라이언트(예: 웹 브라우저, API를 사용하는 애플리케이션)가 서버로부터 원하는 데이터 타입을 지정한다.
- application/json : 클라이언트가 JSON을 받고 싶다는 의미
- content-type: application/json
- content-type : 클라이언트가 서버로 보내는 데이터 타입을 지정
- application/json : 보내는 데이터가 JSON형식이다.
Interceptor
- HTTP 요청이나 응답을 중간에 가로채서 추가 작업을 수행하는 컴포넌트이다.
- 인터셉터의 두가지 종류
- Application Interceptor
- 네트워크 요청/응답 자체보다는 요청을 보내기 전과 받은 후의 처리에 집중한다.
- Network Interceptor
- 실제 네트워크 요청/응답에 관여
- 요청이 전송된 직후와 서버로 부터 응답 받는 순간에 요청과 요청과 응답을 가로채는 기능을 한다.
- 요청과 응답을 검사하고 수정하거나 추가적인 처리를 할수 있다.
- Application Interceptor
JSESSIONID
- 자바 서버 플랫폼(예:Java Servlet)에서 사용되는 세션 식별자 입니다.
- 세션 관리 : 서버가 클라이언트의 각각의 세션을 구별하고 관리하는 데 사용된다. 웹 애플리케이션에서 사용자가 로그인하면 서버는 각 사용자의 세션을 식별하기 위해 고유한 JSESSIONID를 생성합니다.
- 쿠키 형태로 저장 : 일반적으로 JSESSIONID는 쿠키의 형태로 클라이언트의 브라우저에 저장됩니다. 사용자가 서버에 요청을 보낼 때 마다 이 쿠키를 함께 전송하여 서버가 사용자의 세션을 식별할 수 있도록 합니다.
- 세션(Session)
- 웹 애플리케이션에서 사용자의 상태와 데이터를 지속적으로 유지하기 위한 방법입니다.
- 상태 정보 유지
- 웹 서버는 세션을 사용하여 사용자의 로그인 정보, 프로필 설정, 장바구니 내용 등과 같은 상태 정보를 유지합니다.
- 고유 식별자
- 각 세션은 고유한 식별자(예: 세션 ID)를 가지며, 이를 통해 서버는 다양한 사용자의 요청을 구별하고 각 사용자의 특정 세션 데이터에 접근할 수 있습니다.
- 브라우저 종료시 만료
- 일반적으로 세션은 사용자가 브라우저를 닫거나 일정시간 동안 활동이 없을 때 만료됩니다.
- 서버 저장
- 세션 데이터는 주로 서버 측에 저장됩니다.
- 쿠키와는 다른 점으로 쿠키는 클라이언트 측(사용자의 브라우저)에 데이터를 저장합니다.
- 보안
- 세션은 사용자 인증이나 민감한 데이터의 처리에 사용되므로, 세션관리는 보안적인 측면에서 중요하다.
- 서버 부하
- 세션은 서버에 저장되므로, 많은 사용자를 처리할 때 서버의 부하를 증가할 수 있습니다.
- 이를 관리하기 위해 세션 데이터의 크기를 최소화하고, 만료 정책을 적절히 설정하는 것이 중요하다.
- 세션(Session)
Retrofit
addCallAdapterFactory(RxJava3CallAdapterFactory.create())
- Retrofit.Builder()에 추가하는 함수
- RxJava3 어댑터 팩토리를 추가한다.
- 이를 통해 Retrofit 응답을 RxJava3의 Observable, Flowable등으로 변환 할 수 있게 해줍니다.
Kotlin
class Example {
@JvmOverloads
fun sayHello(name: String, times: Int = 1) {
for (i in 1..times) {
println("Hello, $name!")
}
}
}
- kotlin에서 사용되는 어노테이션이다.
- 코틀린 함수나 생성자에 적용된다.
- java 코드와의 상호 운용성을 향상시키기 위해 사용된다.
- 자바는 코틀린의 기본 매개변수 값을 지원하지 않는다.
- @JvmOverloads를 사용하면 코틀린이 자바에 대해 함수 오버로딩을 자동으로 생성해준다.
- 코드 설명
- sayHello(String:name, int times) : 두 매개변수 모두를 받는 메서드
- sayHello(String:name) : times 매개변수는 기본값 1을 사용하는 메서드
SSLSocketFactory
- SSLSockerFactory는 사용자 지정 SSL 소켓 팩토리
- 특히 HTTPS 연결을 위한 보안 통신을 설정할때 사용됨
- SSLSocketFactory 인스턴스는 SSL 소켓을 생성하는데 사용되며, 앱이 HTTPS 연결을 설정할 때 사용된다.
- SSL 소켓의 주요 기능
- 암호화
- SSL 소켓은 데이터를 암호화하여 전송합니다.
- 이는 데이터가 전송 중에 도청되거나 변경되는 것을 방지한다.
- 인증
- SSL 소켓은 일반적으로 서버의 인증을 위해 디지털 인증서를 사용합니다.
- 이를 통해 클라이언트는 서버의 정체성을 확인할 수 있으며, 이는 피싱 공격과 같은 보안 위협을 줄이는 데 도움이 됩니다.
- 데이터 무결성
- SSL은 데이터가 변경되지 않고 전송 중에 손상되지 않았음을 보장합니다.
- 암호화
- SSL 소켓의 주요 기능
X509TrustManager
- 주요 기능
- 서버 인증서 검증(checkServerTrusted)
- 클라이언트가 서버에 연결할 때, 서버가 제공하는 인증서가 신뢰할 수 있는지 검사한다.
- 이 메소드는 서버 인증서의 유효성, 만료 여부, 발행기관의 신뢰도등을 검증할 수 있다.
- 클라이언트 인증서 검증(checkClientTrusted)
- 양방향 SSL/TLS 연결에서 사용되며, 클라이언트의 인증서가 신뢰할 수 있는지 서버가 검증한다.
- 신뢰할 수 있는 발행 기관(getAcceptedIssuers)
- 신뢰할 수 있는 인증서 발행 기관의 목록을 제공한다.
- 이 목록은 인증서 검증 과정에서 참조된다.
- 서버 인증서 검증(checkServerTrusted)
- 중요한 고려 사항
- SSLContext와의 연동
- X509TrustManager는 SSLContext와 함께 사용되어 SSL/TLS 연결의 보안 설정을 구성합니다.
- SSLContext와의 연동
window.decorView
- 안드로이드에서 winodw.decorView는 Activity의 최상위 뷰를 나타냅니다.
- 간단히 말해, Activity의 전체 화면을 채우는 뷰입니다.
- 이 뷰는 Activity의 모든 시각적 콘텐츠를 포함하고 있으며, 윈도우 자체의 배경, 타이틀, 보더 등과 같은 시스템 UI요소들도 포함합니다.
- 사용 목적
- 전체 화면 모드로 전환할 때 사용됨
- 윈도우의 상단에 있는 시스템 UI를 숨기거나 보이게 할 때 사용됩니다.
- 특정 UI요소에 대한 글로벌 적용을 하고 싶을 때 사용됩니다.
- 터치 이벤트나 키보드 이벤트를 윈도우 전체에 걸쳐 처리하고 싶을 때 사용됩니다.