http - 带有图像附件的 Julia HTTP POST 请求

标签 http post request julia pushover

我正在努力使用 Julia HTTP package 实现带有图像附件的 POST 请求.在 Python 中我可以做到(来自 Pushover ):

import requests
r = requests.post("https://api.pushover.net/1/messages.json", data = {
  "token": "APP_TOKEN",
  "user": "USER_KEY"
},
files = {
  "attachment": ("image.jpg", open("myimage.jpg", "rb"), "image/jpeg")
})

如何使用 Julia/HTTP 或其他 Julia 包以简单的方式添加此类文件附件?

非常感谢!

最佳答案

这应该是使用 HTTP.jl 的等效请求:

import HTTP
url = "http://localhost:8080" # check request with e.g. netcat -lp 8080
open("cat.jpg") do io
    headers = []
    data = [
        "token" => "APP_TOKEN",
        "user" => "USER_KEY",
        "attachment" => io,
    ]
    body = HTTP.Form(data)
    HTTP.post(url, headers, body)
end

文件名 (cat.jpg) 和内容类型 (image/jpeg) 是从 io 中推断出来的。


如果你需要更好的控制,比如你希望请求中的文件名与磁盘上的文件名不同,或者你想手动指定Content-Type,你可以手动构造一个HTTP.Multipart 条目,如下所示:

data = [
    "token" => "APP_TOKEN",
    "user" => "USER_KEY",
    "attachment" => HTTP.Multipart("other_filename.jpg", io, "image/png"),
]

你可以比较/验证来自 HTTP.jl 的请求和来自 requests 的请求,方法是使用类似的东西

$ netcat -lp 8080

并将请求发送到http://localhost:8080

关于http - 带有图像附件的 Julia HTTP POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66268254/

相关文章:

iphone - API key 必须在每个请求中作为 API-Key header 传递

python - 为什么字典不像 urllib post 中的字符串?

javascript - 如何向 Angular 应用程序发出 CORS HTTP 请求

ios - 图片的异步下载

node.js - 使用 Nock 和 Request 模拟 HTTP 请求错误

http - 发生授权错误时的 CORS 和预检 (OPTIONS) 响应代码

java - 如何在 ResponseEntity 中返回 CREATED 状态 (201 HTTP)

angular - 标题未设置

ajax - 使用AJAX发布表单

c# - 未使用 HTTP Post 传递部分参数值