如何解决在Julia中执行post请求时出现的错误400

如何解决在Julia中执行post请求时出现的错误400,julia,Julia,我试图通过SlackAPI向Slack发送一些数据 代码如下: using HTTP using JSON HTTP.setuseragent!("HTTP.jl") params = Dict("message"=>"Hello!") url = "https://hooks.slack.com/services/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" r = HTTP.request("POST", url,

我试图通过SlackAPI向Slack发送一些数据

代码如下:

using HTTP
using JSON

HTTP.setuseragent!("HTTP.jl")


params = Dict("message"=>"Hello!")
url = "https://hooks.slack.com/services/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"
r = HTTP.request("POST", url,
             ["Content-Type" => "application/json"],
             JSON.json(params))

println(JSON.parse(String(r.body)))
此代码来自

以下是我得到的错误:

ERROR: LoadError: HTTP.ExceptionRequest.StatusError(400, "POST", "/services/TQVJBU534/BR8C1LMPS/42thawJz34SWSgZCpniyLBSE", HTTP.Messages.Response(v"1.1.0", 400, Pair{SubString{String},SubString{String}}["Content-Type" => "text/html", "Transfer-Encoding" => "chunked", "Connection" => "keep-alive", "Date" => "Tue, 03 Dec 2019 23:04:51 GMT", "Server" => "Apache", "Vary" => "Accept-Encoding", "Strict-Transport-Security" => "max-age=31536000; includeSubDomains; preload", "Referrer-Policy" => "no-referrer", "X-Frame-Options" => "SAMEORIGIN", "Access-Control-Allow-Origin" => "*", "X-Via" => "haproxy-www-gyc5", "X-Cache" => "Error from cloudfront", "Via" => "1.1 6b1e633ac9cee1a933fb96b8da595b0f.cloudfront.net (CloudFront)", "X-Amz-Cf-Pop" => "BOS50-C1", "X-Amz-Cf-Id" => "45iNFi5NKuBAq8Ti738Sm9U75pIP2e3r72sCMCkeolBBfkm5fQqt3A=="], UInt8[0x6e, 0x6f, 0x5f, 0x74, 0x65, 0x78, 0x74], HTTP.Messages.Request("POST", "/services/TQVJBU534/BR8C1LMPS/42thawJz34SWSgZCpniyLBSE", v"1.1.0", Pair{SubString{String},SubString{String}}["Content-Type" => "application/json", "Host" => "hooks.slack.com", "User-Agent" => "HTTP.jl", "Content-Length" => "20"], UInt8[0x7b, 0x22, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x22, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x21, 0x22, 0x7d], HTTP.Messages.Response(#= circular reference @-2 =#), 1, nothing)))
Stacktrace:
 [1] #request#1(::Base.Iterators.Pairs{Symbol,Nothing,Tuple{Symbol},NamedTuple{(:iofunction,),Tuple{Nothing}}}, ::typeof(HTTP.request), ::Type{ExceptionLayer{ConnectionPoolLayer{StreamLayer{Union{}}}}}, ::HTTP.URIs.URI, ::Vararg{Any,N} where N) at /Users/logankilpatrick/.julia/packages/HTTP/lZVI1/src/ExceptionRequest.jl:22
 [2] (::HTTP.var"#kw##request")(::NamedTuple{(:iofunction,),Tuple{Nothing}}, ::typeof(HTTP.request), ::Type{ExceptionLayer{ConnectionPoolLayer{StreamLayer{Union{}}}}}, ::HTTP.URIs.URI, ::HTTP.Messages.Request, ::String) at ./none:0

任何解决此问题的建议都表明,对于SlackAPI,您需要将params键设置为“text”:

using HTTP
using JSON

HTTP.setuseragent!("HTTP.jl")


params = Dict("text"=>"Hello!")
base_url = "https://hooks.slack.com"
endpoint = "/services/TQVJBU534/BR8C1LMPS/42thawJz34SWSgZCpniyLBSE"
url = base_url * endpoint

r = HTTP.post(url,
             ["Content-Type" => "application/json"],
             JSON.json(params))

println(String(r.body))