需要 JSON 格式正文的 Scalaj HTTP 端点
Scalaj HTTP endpoint that requires a JSON-formatted body
我正在尝试使用 scalaj 发出 POST 请求,但出现以下错误
{"code":40010000,"message":"request body format is invalid"} java.lang.Exception: HTTP ERROR: 400
我正在尝试访问 Alpaca Broker API 来下订单,我的代码如下所示
val response: HttpResponse[String] = Http(s"$endpoint/v2/orders").
headers(Map(AlpacaInfo.key_header->key, AlpacaInfo.secret_header->secret)).
params(Map("symbol"->symbol, "qty"->qty, "side"->side, "type"->`type`, "time_in_force"->time_in_force) ++ parameters).
method("POST").asString
我的 GET 请求按预期工作 我只是在使用 POST 时遇到了问题。在羊驼讨论中有人说这可能是因为编码不是 JSON 格式。我怎么能fix/change那个?
P.S。我是进行 API 调用的新手,所以这个问题很可能不是很清楚而且我不知道。任何帮助将非常感激。
而不是params
尝试postData
这样的方法
val body =
s"""
|{
| "symbol": "$symbol",
| "qty": $qty,
| "type": "$`type`",
| "time_in_force": "$time_in_force"
|}
|""".stripMargin
Http(...)
.headers(...)
.postData(body)
.method("POST")
.asString
您可以使用适当的 JSON 序列化库,例如 upickle,而不是使用原始字符串来表示 JSON,然后可以像这样提供正文
import upickle.default._
case class MyModel(symbol: String, qty: Int, `type`: String, time_in_force: String)
implicit val configRW: ReadWriter[Config] = macroRW
Http(...)
.postData(write(MyModel(...)))
我正在尝试使用 scalaj 发出 POST 请求,但出现以下错误
{"code":40010000,"message":"request body format is invalid"} java.lang.Exception: HTTP ERROR: 400
我正在尝试访问 Alpaca Broker API 来下订单,我的代码如下所示
val response: HttpResponse[String] = Http(s"$endpoint/v2/orders").
headers(Map(AlpacaInfo.key_header->key, AlpacaInfo.secret_header->secret)).
params(Map("symbol"->symbol, "qty"->qty, "side"->side, "type"->`type`, "time_in_force"->time_in_force) ++ parameters).
method("POST").asString
我的 GET 请求按预期工作 我只是在使用 POST 时遇到了问题。在羊驼讨论中有人说这可能是因为编码不是 JSON 格式。我怎么能fix/change那个?
P.S。我是进行 API 调用的新手,所以这个问题很可能不是很清楚而且我不知道。任何帮助将非常感激。
而不是params
尝试postData
这样的方法
val body =
s"""
|{
| "symbol": "$symbol",
| "qty": $qty,
| "type": "$`type`",
| "time_in_force": "$time_in_force"
|}
|""".stripMargin
Http(...)
.headers(...)
.postData(body)
.method("POST")
.asString
您可以使用适当的 JSON 序列化库,例如 upickle,而不是使用原始字符串来表示 JSON,然后可以像这样提供正文
import upickle.default._
case class MyModel(symbol: String, qty: Int, `type`: String, time_in_force: String)
implicit val configRW: ReadWriter[Config] = macroRW
Http(...)
.postData(write(MyModel(...)))