안드로이드로 ocr을 구현하려고 하는데 응답을 제대로 못받아와서 디버깅을 해보니 code:401 이라고 뜹니다.
찾아보니 인증관련한 문제인것같은데 어디가 잘못된것인지모르겠습니다.
String auth = "KakaoAK (앱키부분)";
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == GET_GALLERY_IMAGE && resultCode == RESULT_OK && data != null && data.getData() != null) { //album에서 사진 선택 및 가져오기 성공하면 requestCode가 1
Uri uri = data.getData();
filePath = getRealPathFromURI(uri);
File file = new File(filePath);
requestPost("https://dapi.kakao.com/v2/vision/text/ocr", file);
}
}
public void requestPost(String url, File _file) {
MediaType MEDIA_TYPE_IMAGE = MediaType.parse("image/jpeg");
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("image", _file.getName(), RequestBody.create(MEDIA_TYPE_IMAGE, _file))
.build();
//작성한 Request Body와 데이터를 보낼 url을 Request에 붙임
Request request = new Request.Builder()
.url(url)
.addHeader("Host", "dapi.kakao.com")
.addHeader("Authorization", auth)
.addHeader("Content-Type", "multipart/form-data")
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
//request를 Client에 세팅하고 Server로 부터 온 Response를 처리할 Callback 작성
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@org.jetbrains.annotations.NotNull Call call, @org.jetbrains.annotations.NotNull IOException e) {
Log.e("요청", "onFailure()");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.e("onResponse", "Response Body is " + response.body());
}
});
}
카카오사이트에 앱도 등록하고 플랫폼도 안드로이드 해시키와 함께 저장한 상태인데도 구동이안됩니다…
코드를 어떻게 수정해야하는지 막막하여 올립니다.
조언주시면 감사하겠습니다.