能否获得response body参数?

问题描述 投票:0回答:1

我正在用HTTPoison下载一张图片,但我不知道如何从response的body中获取图片。我需要把它放到annotate_image中作为base64编码的字符串传递给另一个API。然而,我无法弄清楚body是什么。即使IO.put body也会抛出一个错误,它说我在调用它时有3个参数,我可以清楚地看到图像是这些参数之一,但我无法在我的annotate_image函数中提取它。我试过 "body[ 1 ]"、body(1)、body.1、body.get(1)和其他变化,都没有用。我怎么才能弄清楚body是什么类型的结构,它的成员变量params是什么?

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
elixir httpoison
1个回答
1
投票

body只是一个二进制文件,假设你在这里下载的确实是一个图像文件,它将有文件的内容在里面。你可以通过将其保存到一个具有适当扩展名的文件来验证这一点 (.png比如说,但这取决于实际的文件格式)并在电脑上打开它。根据你想对图像做什么,你可能需要一个图像处理库来在你的程序中处理它。

© www.soinside.com 2019 - 2024. All rights reserved.