api post 호출 할 때 이미지 전송..질문이요

안녕하세요, api post 요청 할 때 이미지를 전송하는 부분에 대해 질문드립니다.

위 이미지는 api 문서입니다. 저 내용을 바탕으로 아래와 같이 코드를 작성하였는데

정상적으로 api 호출이 되지가 않는데,혹시 문제점이 있을까요…

private async Task SendOcrRequest5()
        {
            try
            {
                // API URL
                string url = "https://api3.useb.co.kr/ocr-doc/business-registration";

                // Your Bearer Token
                string bearerToken = await GetAccessToken();

                // 파일 찾기 대화 상자 열기
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Filter = "이미지 파일|*.jpg;*.png;*.pdf|모든 파일|*.*";

                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    // 이미지 경로
                    string selectedImagePath = openFileDialog.FileName;

                    // 지원하는 확장자인지 확인
                    string[] allowedExtensions = { ".jpg", ".jpeg", ".png", ".pdf" };
                    string fileExtension = Path.GetExtension(selectedImagePath).ToLower();

                    if (allowedExtensions.Contains(fileExtension))
                    {
                        // Request Body
                        byte[] imageBytes = File.ReadAllBytes(selectedImagePath);
                        string imageBase64 = Convert.ToBase64String(imageBytes);
                        string fileName = Path.GetFileName(selectedImagePath);

                        // Request
                        using (HttpClient client = new HttpClient())
                        {
                            // Header
                            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);

                            // Body
                            MultipartFormDataContent content = new MultipartFormDataContent();
                            content.Add(new StringContent(imageBase64), "image_base64");
                            content.Add(new StreamContent(new MemoryStream(imageBytes)), "image", fileName);

                            // Request
                            HttpResponseMessage response = await client.PostAsync(url, content);

                            // Response
                            int statusCode = (int)response.StatusCode;
                            string responseBody = await response.Content.ReadAsStringAsync();

                            // Print response
                            Console.WriteLine("Status code: " + statusCode);
                            Console.WriteLine("Response body: " + responseBody);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Exception: {ex.Message}");
            }
        }
1 Like

Body에
image_base64, image는
둘중 하나를 사용 하는 것 같습니다.

이미지를 base64로 인코딩해서 body로 요청하거나
이미지 바이너리를 요청하거나

둘중 하나

이게 따라
Header에 Content-Type도 달라질거 같구요

1 Like

아… ㅠㅠ 감사합니다 한번 하나씩 해볼게요

1 Like

감사합니다 해결 했습니다 ㅠㅠ 헤더 타입이 json 일때 이미지를 base64 로 보내니 잘 되네요…

1 Like