HTTP

Mutipart 무엇인가? - Multipart는 HTTP에서 여러 종류의 데이터를 동시에 전송하기 위해 사용되는 방식입니다. - 'Content-Type' 헤더에 'multipart/form-data'값을 가지며 여러 개의 part로 구성됩니다. - 주로 파일 업로드나 폼 데이터 전송 등에 사용됩니다. Multipart 활용을 위한 Api 호출 함수 구성 @Multipart @PATCH("/api/v1/users/{id}") suspend fun editUserImage( @HeaderMap headers: HashMap, @Path("id") id: Int, @Part file: MultipartBody.Part ): Response @Multipart 어노테이션과 보낼 파일 데이터에 대해서는 @Pa..
아래와 같이 api 호출 인터페이스를 구성하여 서버와의 통신을 시도했는데, EOFException이 발생했다. interface TestApi { @PUT("/api/test") fun update( @HeaderMap headers: HashMap, @Body request: BodyRequest ): Call } java.io.EOFException: End of input at line 1 column 1 path 통신 후, Response를 반환하는데 Empty Response를 반환하고 있었다. 하지만 내가 작업하면서 NormalResponse Type으로 반환되도록 구성하면서 발생하는 것이 원인이었다. 이 경우 2가지 해결 방법이 존재했다. 1. NormalResponse가 아니라 Unit으로..
(왜 맨날 까먹는지..;;) Retrofit에서 통상 @DELETE 시에는 @Body는 사용하지 않아, 일반적인 @DELETE 처리가 불가능하다... interface DeleteConnectionApi { @HTTP(method = "DELETE", path = "api/mem/externalConnection", hasBody = true) fun deleteConnection( @HeaderMap headers : HashMap, @Body connectionId : DeleteConnectionId ) : Call } 위처럼 @HTTP를 활용하여 hasBody = true 처리 후, 구성해 주면 문제없이 통신이 가능하다.
api 통신에 대한 에러 발생 시, 해당 통신에 대한 Reqeust Body를 추출하여 사용자가 어떠한 값을 보냈는지 파악할 필요가 있다. @Body 또는 @Field 형식으로 보내는 경우에 대해 OkHttpClient에서 값을 추출하는 로직을 구성해 봤다. private fun extractBodyStringFromRequest(request: Request): String { return if (request.body is FormBody) { //Field type val field = mutableMapOf() val formBody = request.body as FormBody for (i in 0 until formBody.size) { field[formBody.name(i)] = form..
SeungYong.Lee
'HTTP' 태그의 글 목록