# Okhttp

24개의 포스트
post-thumbnail

[Android] Okhttp Interceptor에 대해(1)

📌 Interceptor란? Android에서 실제 서버 통신이 일어나기 직전, 직후에 요청들을 가로채서 기능을 추가적으로 수행할 수 있게 도와준다. okhttp3에 Interface 형태로 구현되어 있다. >이번 프로젝트에서 서버는 OAuth와 JWT를 구현하여, 때문에 서버 통신 헤더에 Token을 담아 통신해야 했기 때문에 Interceptor를 통해 기능을 구현하였다. > 📍 로직 AccessToken으로 리소스에 접근할 수 있으며, 만료시간은 30분이다. AccessToken이 만료가 되면, Refresh토큰으로 AccessToken을 갱신 시킨다. Refresh토큰의 만료시간은 7일이다. 곧바로 갱신된 AccessToken으로 방금 접근하려고 했던 리소스에 다시 접근한다. <img src="https://velog.velcdn.com/images/heeung/post/58f85165-b28a-449e-

2023년 8월 29일
·
0개의 댓글
·

Android, Django 서버의 JSON 데이터를 제공하는 API 엔드포인트로 요청 보내기

1. OkHttp를 사용한 방법 > client.newCall(request) 비동기적 네트워크 요청 Callback 인터페이스 구현 > 주의사항 네트워크요청은 UI 스레드에서 직접 수행하면 안됨 runOnUiThread나 다른방법 사용해야함 2. Retrofit을 사용한 방법 1) Gradle 파일에 Retrofit 의존성 추가 2) 데이터 모델 클래스 정의 JSON 데이터의 구조와 일치해야함 3) Retrofit 인터페이스 정의 4) Retrofit 인스턴스를 생성하고 API 호출을 처리하는 코드를 작성

2023년 8월 11일
·
0개의 댓글
·

Andorid, okhttp와 retrofit

okhttp와 retrofit은 안드로이드 앱에서 네트워크 요청을 처리하기 위해 있는 인기있는 라이브러리 OkHttp 간단하고 가볍고 유연한 HTTP 클라이언트 라이브러리 네트워크 요청을 보내고 응답을 받는 기능을 제공 직접 요청을 작성하고 응답을 처리할 수 있으며, 커스터마이징 용이 간단한 네트워크 요청을 처리하거나 기본적인 기능만 필요한 경우 적합 Retrofit OkHttp를 기반으로한 RESTful API 클라이언트 라이브러리 인터페이스 기반의 간편한 API 정의와 자동으로 직렬화/ 역직렬화 기능을 제공 API 엔드포인트에 대한 메서드를 정의, 매개변수와 응답형식을 지정하여 네트워크 요청 처리 가능 > Retrofit, Okhttp는 상호보완적 관계

2023년 8월 11일
·
0개의 댓글
·

Custom Logger로 통신 문제 해결

어느날 평소에 잘 사용 하던 고객사로 부터 새벽에 앱 접속이 안된다는 연락을 받았다 문제 진단을 위해 앱에서는 OKHttpClient의 connectTimeout, readTimeout, writeTimeout 값 확인 및 API 테스트를 했지만 timeout은 각각 120초로 잘 설정 되어 있었고 테스트에도 문제는 없었다 서버쪽에서도 문제 해결을 위해 timeout 로그를 확인 했지만 관련 로그는 남아 있는게 없었다고 했다 혹시나 하는 마음에 몇몇 API에 Firebase Crashlytics 로그를 남겨 놓은 부분을 확인 했고 로그인 뿐만 아니라 스캔이나 그 외 다른 API 에서 timeout 에러가 나는게 확인 됐다 java.net.SocketTimeoutException: timeout 하지만 이 로그들만으로 문제를 확실히 파악 하기가 불가능 했던게 먼저 Firebase Crashlytics 로그를 모든 API에 연결 해놓지 않았어서

2023년 7월 6일
·
0개의 댓글
·
post-thumbnail

OkHttp - Cache

Cache (캐시) OkHttp에서의 캐시란 API 호출의 응답을 로컬 저장소에 저장하여 이후 동일한 요청이 발생할 때 서버에서 데이터를 가져오지 않고 로컬 저장소에서 불러오게 하여 성능을 향상시키는 방법입니다. 이렇게 하면 네트워크 대역폭 사용이 줄어들고 응답 시간이 단축되며, 서버 부하가 감소합니다. 언제 사용하면 좋을까?? 캐시를 사용하기 적합한 상황은 다음과 같습니다. 동일한 데이터를 반복적으로 요청하는 경우 변경되지 않거나 자주 변경되지 않는 데이터를 요청하는 경우 네트워크 연결이 불안정하거나 제한된 대역폭이 있는 경우 서버 부하를 최소화하고자 하는 경우 간단 Cache(캐시) 사용방법 캐시 디렉터리 및 캐시 크기 설정 : 캐시를 저장할 디렉터리르 설정하고 캐시의 최대 크기를 지정합니다. OkHttpClient에 캐시 설정 : 앞에서 생성한 캐시 인스턴스를 OkHttpClient의 캐시로 설정합니다.

2023년 4월 2일
·
0개의 댓글
·
post-thumbnail

OkHttp - Interceptors

오늘은 Android에서 OkHttp - Interceptors에 대해 알아보는 글을 작성하려고 합니다. Interceptors는 네트워크 요청과 응답을 관리하고 조작하는 역할을 합니다. OkHttp Interceptors 란? Interceptors는 OkHttp의 핵심 기능 중 하나로, 네트워크 요청과 응답을 가로채어 추가 작업을 수행하거나 수정할 수 있습니다. 이를 통해 로깅, 인증, 캐싱 등 다양한 기능을 구현할 수 있습니다. Interceptors는 크게 두 가지 유형으로 나뉩니다. Application Interceptors : 네트워크 요청 및 응답을 가로채어 애플리케이션 수준에서 작업을 수행합니다. 예를 들어, 공통 헤더를 추가하거나 로깅하는 것이 포함됩니다. Network Interceptors : 네트워크 요청 및 응답을 가로채어 네트워크 수준에서 작업을 수행합니다. 예를 들어 캐싱, 요청 재시도, 인증 토큰 생신 등이 포함됩니다.

2023년 3월 28일
·
0개의 댓글
·
post-thumbnail

OkHttp-Multipart

안드로이드 개발할 떄 서버와 통신은 필수적인 요소 중 하나입니다. 이때 이미지, 비디오, 오디오와 같은 바이너리 데이터를 서버에 업로드하거나 다운로드할 경우 Multipart 요청이 자주 사용됩니다. 그렇기에 이번 글에서 Multipart 요청을 사용하는 방법과 관련된 정보를 제공하고자 합니다. Multipart 요청이란? Multipart 요청은 일반적으로 파일 업로드와 같은 바이너리 데이터를 전송할 때 사용되는 HTTP 요청입니다. 이 요청은 여러 파트로 구성되어 있으며, 각 파트는 다른 데이터 유형을 가질 수 있습니다. 예를 들어, Text 데이터와 이미지 데이터를 동시에 보내고 받을 수 있습니다. Android에서의 Multipart 요청 안드로이드에서 Multipart 요청을 사용하려면, 주로 OkHttp 라이브러리를 사용합니다. OkHttp는 네트워킹 작업을 쉽게 처리할 수 있는 라이브러리입니다. 먼저 OkHttp와 OkHttp의 Multipart

2023년 3월 24일
·
0개의 댓글
·

날씨 앱 만들기 [No.1]

1.초기 설정 1-1. AndroidManifest.xml 인터넷 사용 설정 AndroidManifest.xml에 가서 인터넷 사용 권한을 추가해줘야 합니다. 1-2. build.gradle(:app) ViewBinding,gson.glide,retrofit 사용 설정 Bundle.gradle(Module.app)에서 위의 기능들을 사용하기 위한 설정들을 해줍니다. viewbinding 설정 gson,glide,retrofit 😉위의 코드는 딱히 이해를 요구하지는 않으니 컴퓨터에서 환경 설정한다고 생각하고 따라치시면 됩니다.😉 Model 생성 REST API를 통해서 받아온 데이터를 사용하기 쉽도록 reponse되는 데이터에 맞게 구현한 Weather Class 입니다. API 를 통해서 받아오는 데이터는 JSON형태이고, 우리는 이를 GSON 오픈 소스 라이브러리를

2023년 3월 10일
·
0개의 댓글
·
post-thumbnail

빅데이터 Java 개발자 교육 - 11일차 [REST API]

11일차의 힘찬 아침! 오늘은 REST api를 이용하여 데이터베이스로 자료를 주고받는 실습을 해볼것이다. > # REST, REST API란? 출처 - REST “Representational State Transfer” 의 약자로써, 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. - REST API REST API에서 API(Application Programming Interface)란 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것이며, REST 기반으로 서비스 API를 구현한 것이다. 최근 OpenAPI(누구나 사용할 수 있도록 공개된 API: 구글 맵, 공공 데이터 등), 마이크로

2023년 2월 26일
·
0개의 댓글
·

자바 MockWebServer로 멱등성 있는 테스트코드 작성하기

Overview 우리 팀에서 관리하는 서버 중에 외부의 이미지를 수집하기 위해 이미지 URL을 받아 이를 우리가 원하는 사이즈로 가공하여 S3에 업로드하는 역할을 하는 서버가 있다. 이러한 프로세서에 대해 테스트코드를 작성하고자 하니,, 문제점이 있었다. 이미지 URL은 언제든 깨질 수 있어 테스트코드 작성 시 가장 중요한 원칙 중 하나인 멱등성 보장이 어려웠다. 그래서 이미지를 받아오는 외부 서버와 통신하는 부분을 모킹서버를 활용해 해결하였다. MockServer 라이브러리 선정하기 처음에 두가지 라이브러리 중 고민을 하였다. MockServer Netty okhttp MockWebServer 스프링 진영에서는 okhttp MockWebServer를 활용해 모킹서버를 구축하는 것을 권장([링크](https://github.com/spring-projects/spring-framework/issues/19852#issuecomment-45345235

2023년 2월 19일
·
0개의 댓글
·
post-thumbnail

okhttp의 역할과 Retrofit과의 관계

OkHttp Okhttp는 REST API, HTTP 통신을 간편하게 구현할 수 있도록 다양한 기능을 제공해주는 라이브러리 입니다. 그리고 Okhttp는 Retrofit이라는 라이브러리의 베이스가 됩니다. REST API REST는 Representational State Transfer라는 용어의 약자로서 HTTP의 주요 저자 중 한 사람인 로이 필딩이 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되지 못하는 모습에 웹의 장점을 최대한 활용할 수 있는 아키텍쳐로 REST를 발표하였고 그 아키텍쳐를 이용해 만든 API를 REST API라고 합니다. 특징을 정리하자면 다음과 같습니다. HTTP 프로토콜 장점을 살릴 수 있는 네트워크 기반 아키텍쳐 REST API을 구현하기 위해 HTTP method + 모든 개체 Resource화 + URL 디자인(라우팅)필요합니다. > 라우팅이란? 클라이언트의 요청에 대한 결과을 어떻게 이어줄 것인

2022년 6월 26일
·
0개의 댓글
·
post-thumbnail

OkHttp 와 Retrofit

1. 배경 지식 >정리 링크 : HTTP란? >- 1. HTTP > HTTP는 HyperText Transfer Protocol의 약자로, 인터넷 상에서 HTML 문서와 같은 데이터를 링크 기반으로 주고받기 위한 프로토콜(통신 규약)으로, 서버-클라이언트 모델(클라이언트 - 요청 / 서버 - 응답)을 따르는 프로토콜로 전송 제어 프로토콜(TCP)와 인터넷 프로토콜(IP) 위에서 동작합니다. > 2. HTTPS > HTTP + Secure SocKet(보안 통신)의 약자로 모든 통신 내용을 암호화하며, 공개키 암호화 방식을 사용합니다. > 3. REST > REST(Representational State Transfer)는 웹 서비스를 설계하는 데 사용되는 아키텍처 스타일입니다. REST는 인터넷에서 웹 서비스 간의 통신을 용이하게 하는 몇 가지 기본 원칙을 제시합니다.

2022년 6월 17일
·
0개의 댓글
·

[안드로이드]RestAPI란?Retrofit과 okhttp의 차이점.

시작. 면접 질문으로 받았던 것 중 하나.다른 사람들이 많이 쓰니까 라는 생각으로 써보기만 해서 정리해두려 한다. 검색해보니 Rest Api -> http통신을 쉽게해준다?는건데 그럼 Rest Api랑 Http? 이것까지 싹다 정리해두기로 한다. 내가 아는건 단어 약자 끝에 P가 들어간다면 이건 Protocol이라는 것이다. 전부 다 알아보자. Rest Api? 다음 내용으로 정리해놔야겠다. okhttp 동기, 비동기 방식을 각각 제공하여 개발자가 선택하여 개발이 가능하다. RestApi, Http 통신을 간편하게 구현할 수 있도록 다양한 기능을 제공해주는 라이브러리이다. Retrofit 서버와 클라이언트 간의 http 통신을 위한 인터페이스다. clent -> server -> response -> client 이 과정을 쉽게함. 안드로이드 애플리케이션의 통신 기능에서 코드를 사용하기 쉽게 만들어 놓

2022년 5월 27일
·
0개의 댓글
·

Android 4.4에서 Retrofit의 최신버전을 사용하는 방법

이 글은 Android 5.0 미만 버전을 지원하는 앱에서 Retrofit의 최신 버전을 사용하는 방법을 다룹니다. Retrofit은 안드로이드 앱 개발에 널리 사용되는 네트워킹 라이브러리 입니다. 현재 Retrofit의 최신버전은 2.9.0 인데, 이 버전을 Android 5.0 미만에서 실행시키면 런타임 에러가 발생합니다. 그 원인을 알아보고 해결방법 2가지를 소개하겠습니다. 에러 로그 원인 Retrofit은 2.7.0 버전부터 최소요구사항으로 Java8, Android 5.0 (minSdk 21)을 요구합니다. 그 이유는 Retrofit은 2.7.0 버전부터 OkHttp 3.14.4를 사용하고, OkHttp 3.14.4는 TLS 1.2에서 동작하기 때문입니다. 구글은 안드로이드 5.0 버전부터 TLS 1.2를 지원하고 있습니다. > Version 2.7.0 (2019–12–09) This release changes the minimum requirem

2022년 2월 12일
·
0개의 댓글
·
post-thumbnail

OkHttp

OkHttp는 Square에서 제공하는 오픈소스 프로젝트이며 동기, 비동기 방식을 각각 제공해줌으로서 개발자가 선택하여 사용할 수 있다. OkHttp는 HTTP 및 HTTP/2 통신을 보다 쉽게 할 수 있도록 다양한 기능을 제공해주는 Android 및 Java 용 라이브러리 최신 http통신에 대해 간편히 하고 데이터와 미디어를 교환 하는 방법이며 구성에 도움을 주는 라이브러리 GET POST HttpURLConnection과 HttpClient에 비해 상당히 직관적이고 사용하기도 편리하다. 동기와 비동기 처리를 아주 쉽게 할 수 있다는 점이 인상적이다 [OkHttp 장점] Interceptor 처리하는 것이 편하다. Application Interceptors : Application과 OKHttp 사이에 Requests, Responses 정보를 intercept하여 추가적으로 처리. (예: Request시 추가적인 비

2021년 11월 25일
·
0개의 댓글
·

[DATADOG] API가 너무 느린데 이유를 모르겠다?

문제상황 내가 만든 API가 너무 느려서 골머리를 앓고 있었다. 데이터를 단순 조회하는 API인데도 느린 것이, 무언가 문제가 있다 생각했다. 작성한 글의 내용과 썸네일 같은 데이터베이스에서 읽어오기만 하면 되는 정보도 있었고, 사용자의 역할/권한 또는 상황에 따라 값을 다르게 정해주는 과정이 있었다. (그리고, 나중에 자각했지만 기존 유저정보 관리 서버에 API를 날리기도 했다) 나는 이때, DB에서 데이터를 조회해서 클라이언트가 원하는 데이터를 가공하는 개발 과정 직후에 이 문제를 마주했기 때문에 내가 쿼리를 많이 날리거나 슬로우 쿼리를 작성해서 이런 오랜 시간이 걸리는 것이라고 생각했다. (근데 아니었음) 멘토님과 이야기를 할수록 이상하다

2021년 11월 10일
·
0개의 댓글
·
post-thumbnail

[Android] REST API

서버 개발자님 API 하나만 만들어 주세요 네트워크 통신에서 많이 사용하는 REST API 많이 들어봤는데.. 이게 뭐지 REST API란 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 뜻합니다. 또한 REST는 Representational State Transfer의 줄임말입니다. REST API > - 서버와 클라이언트 구조 Socket 통신과 다르게 양방향이 아닌 단방향 통신 Request와 Response로 이루어짐 Get, Post, Put, Delete 등의 메소드 사용 간단하게 정리하면 클라이언트가 서버에 "~해줘(Request)"라고 보내면 서버는 너가 원하는거 했으니까 "받아~(Response)"라고 다시 보내고 클라이언트는 그 Response를 받는 구조인 것이죠. 그럼 REST API에 대해 알았으니 어떻게 사용하는지 알아보면 > - 이런 클래스나 라

2021년 11월 2일
·
0개의 댓글
·
post-thumbnail

OkHttp

OkHttp는 Square에서 제공하는 오픈소스 프로젝트이며 동기, 비동기 방식을 각각 제공해줌으로서 개발자가 선택하여 사용할 수 있다. OkHttp는 HTTP 및 HTTP/2 통신을 보다 쉽게 할 수 있도록 다양한 기능을 제공해주는 Android 및 Java 용 라이브러리 최신 http통신에 대해 간편히 하고 데이터와 미디어를 교환 하는 방법이며 구성에 도움을 주는 라이브러리 GET POST HttpURLConnection과 HttpClient에 비해 상당히 직관적이고 사용하기도 편리하다. 동기와 비동기 처리를 아주 쉽게 할 수 있다는 점이 인상적이다 [OkHttp 장점] Interceptor 처리하는 것이 편하다. Application Interceptors : Application과 OKHttp 사이에 Requests, Responses 정보를 intercept하여 추가적으로 처리. (예: Request시 추가적인 비즈니스 로직

2021년 10월 20일
·
0개의 댓글
·

[Android] retrofit 세션 유지

https://two22.tistory.com/35 user의 money와 point를 받아와야하는데 user authentication을 거쳐야하는데 client에서 server에 요청을 보내는 데에서 403 forbidden 에러가 생겼다 유저 인증 실패했다는 말.. session id를 header로 넘겨줘야한다고 한다 대표님 말로는 웹에서는 아마 자동으로 처리해준다는데 어플에선 안해준다고 했다 근데 매번 header로 session id 넘겨주는 건 불편해,, 대표님이 세션 유지하는 법 알려줬다 어미새의 먹이를 받아 먹는 아기새 마냥 ............ 점점 더 자립심을 길러야지 나자신 화이팅

2021년 9월 25일
·
0개의 댓글
·

[Android] app 연동 (retrofit)

https://cholol.tistory.com/470 개발한 앱을 백엔드와 연결해줘야하는데 이 때 retrofit이라는 라이브러리가 사용된다. https://mcflynn.tistory.com/10 이제 어떻게 하는지 이해 했다!! > 1. 주고 받는 json data 형식대로 data class 정의 api 함수 만들기 retrofit creator 생성 api 호출

2021년 8월 24일
·
0개의 댓글
·