안드로이드(코틀린)으로 OCR REST API 를 사용하려고합니다.
REST API 는 retrofit2를 사용하고 있습니다.
KakaoOcrAPI.kt (MyAPI)
const val REST_API_KEY = "cc03xxxxxxxxxxxxxxxx"
interface MyAPI {
@Multipart
@Headers(
"Authorization: KakaoAK $REST_API_KEY",
"Content-Type: multipart/form-data"
)
@POST("/v2/vision/text/ocr")
fun getOCR(@Part image : MultipartBody.Part) : Call<JSONObject>
}
MainActivity.kt
val sendPart = MultipartBody.Part.createFormData(
"image",
currentPhotoFile.name,
RequestBody.create(
MediaType.parse("multipart/form-data"),
currentPhotoFile
)
)
val ocrCall = myAPI.getOCR(sendPart)
ocrCall.enqueue(object : Callback<JSONObject?> {
override fun onResponse(call: Call<JSONObject?>?, response: Response<JSONObject?>) {
if (response.isSuccessful) {
Log.d("Test", "Success!!")
} else {
Log.d("Test", "Failure Code : $response")
}
}
override fun onFailure(call: Call<JSONObject?>?, t: Throwable) {
Log.d("Test", "Fail msg : " + t.message)
}
})
두가지 질문이 있습니다.
첫번째는 제목과 같은 AccessDeniedError 가 왜 뜨는지.
두번째는 문서를 보니 image의 Type이 Binary로 되어있는데 retroit를 통해 image 파일을 선택하면 자동적으로 Binary로 들어가나요?
LogCat에는 Bad Request 가 떠서 이미지 파일을 binary 형태로 바꾼 후에 넣어주어야되나 싶어서요