
안드로이드에서 REST API, HTTP 통신을 간편하게 구현할 수 있도록 다양한 기능을 제공해주는 Java/Kotlin 오픈소스 라이브러리 (Square사 제공)
버전에 따라 사용법이 조금씩 다르기 때문에 공식 홈페이지를 확인하고 사용하자!
https://square.github.io/okhttp/

public boolean getUserInfo(String key) {
try {
String url = "http://127.0.0.1:8080/v1/test/get?key=" + key;
OkHttpClient client = new OkHttpClient();
// GET 요청을 Request.Builder를 통해 만듦
Request.Builder builder = new Request.Builder().url(url).get();
builder.addHeader("password", "1234");
Request request = builder.build();
// client 객체의 newCall()에 만들어진 request를 전달하고 실행함
Response response = client.newCall(request).execute();
// execute() 메소드는 요청에 대한 응답이 올 때까지 기다렸다가 반환
if (response.isSuccessful()) {
ResponseBody body = response.body();
if (body != null) {
System.out.println("Response: " + body.string());
}
}
else
System.err.println("Error Occurred");
return true;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}

public boolean postUserInfo() {
try {
String url = "http://127.0.0.1:8080/v1/test/post";
String postBody = "" + "{" + "\"key\":123," + "\"value\":55323" + "}";
OkHttpClient client = new OkHttpClient();
Request.Builder builder = new Request.Builder().url(url)
.addHeader("Password", "1234")
.pst(requestBody);
Request request = builder.build();
// 비동기로 요청하려면 execute() 대신 enqueue()를 사용하면 됨
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
ResponseBody body = response.body();
if (body != null)
System.out.println("Response: " + body.string());
}
else
System.err.println("Error Occurred");
retrun true;
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}
안드로이드에서 REST API, HTTP 통신을 간편하게 구현할 수 있도록 다양한 기능을 제공해주는 Java/Kotlin 오픈소스 라이브러리 (Square사 제공)
OkHttp 라이브러리의 상위 구현체

private const val BASE_URL = "https://android-kotlin-fun-mars-server.appspot.com"
// Retrofit 객체 생성
private val retrofit = Retrofit.Builder()
.addConverterFactory(ScalarsConverterFactory.create())
.baseUrl(BASE_URL)
.build()
interface BankApiService {
// 서버에서 응답 문자열을 가져옴
// Retrofit에 GET 요청임을 알리고 이 웹 서비스 메서드의 엔드포인트를 지정함(반환 유형 String)
@GET("photos")
fun getInfo(): String
}
// 공개 객체 BankApi 정의 (앱의 나머지 부분에서 액세스할 수 있는 공개 싱글톤 객체)
object BankApi {
val retrofitService : BankApiService by lazy {
retrofit.create(BankApiService::class.java) }
}
서버에 이미지나 오디오 파일을 전송할 때는 Multipart를 사용함
Multipart는 File 객체(이미지, 오디오 파일 등)인 것과 아닌 것(문자열, 숫자) 등을 모두 서버에 전송할 수 있음
interface LoginApi {
@Multipart
@POST("login")
fun signUpAccount(
@Part imageFile: MultipartBody.Part?
) : Single<LoginResponse>
}
https://jade314.tistory.com/entry/Android-Library-OKHttp-http
https://developer.android.com/codelabs/basic-android-kotlin-training-getting-data-internet?hl=ko#0
https://github.com/square/retrofit
https://square.github.io/retrofit/
https://smashandroid.tistory.com/11