Можно ли получить аргументы тела ответа? - PullRequest
0 голосов
/ 23 апреля 2020

Я загружаю изображение с помощью HTTPoison, но не могу понять, как получить изображение из тела ответа. Мне нужно поместить его в annotate_image в виде строки в кодировке base64 для передачи другому API. Однако я не могу понять, что это за тело. Даже тело IO.puts выдает ошибку и говорит, что я вызываю его с 3 аргументами, и я ясно вижу, что изображение является одним из этих аргументов, но я не могу извлечь его в моей функции annotate_image. Я пробовал "body [1]", body (1), body.1, body.get (1) и другие варианты, ничего не работает. Как я могу выяснить, какой тип структуры тела и каковы его переменные / параметры члена?

The image is argument 1

def get_image(url) do
  finishedUrl = Enum.join(url, "/")

  finishedUrl = String.replace(finishedUrl, "/", "//", global: false)
  IO.puts "Printing url part 2"
  IO.puts finishedUrl
  case HTTPoison.get(finishedUrl) do
    {:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
      annotate_image(body)
    {:ok, %HTTPoison.Response{status_code: 404}} ->
      IO.puts "Not found :("
    {:error, %HTTPoison.Error{reason: reason}} ->
      IO.inspect reason
  end
  IO.puts "get_image ended here"
end

1 Ответ

1 голос
/ 24 апреля 2020

Тело - это просто двоичный файл, который, если вы действительно загружаете файл изображения здесь, будет содержать содержимое файла. Вы можете проверить это, сохранив его в файле с правильным расширением (скажем, .png, но это зависит от фактического формата файла) и открыв его на своем компьютере. В зависимости от того, что вы хотите сделать с изображением, вам может потребоваться библиотека для работы с изображениями, чтобы обработать его в вашей программе.

...