Java 什么是Bitfinex API订单新的有效JSON?

Java 什么是Bitfinex API订单新的有效JSON?,java,json,Java,Json,我已经为Bitfinex REST API烦恼了好几天,特别是它的私有端点 我能够将有效的请求发送到API的其他部分,例如帐户信息或密钥信息等。但在尝试下任何订单时,我总是收到HTTP 400错误 现在,除了几个选项外,我几乎可以使用整个API。因此,使用以下标准创建的JsonObject可以工作: JsonObject value = factory.createObjectBuilder() .add("request", urlPath) .add("nonce", Lon

我已经为Bitfinex REST API烦恼了好几天,特别是它的私有端点

我能够将有效的请求发送到API的其他部分,例如帐户信息或密钥信息等。但在尝试下任何订单时,我总是收到HTTP 400错误

现在,除了几个选项外,我几乎可以使用整个API。因此,使用以下标准创建的JsonObject可以工作:

JsonObject value = factory.createObjectBuilder()
    .add("request", urlPath)
    .add("nonce", Long.toString(this.getNonce()))
    .add("symbol", this.instrument)
    .add("amount", new BigDecimal(0.1).toString())
    .add("price", new BigDecimal(0.14).toString())
    .add("exchange","bitfinex")
    .add("side", "sell")
    .add("type","exchange limit")
    .build();
但是,以下返回HTTP 400:

JsonObject value = factory.createObjectBuilder()
    .add("request", urlPath)
    .add("nonce", Long.toString(this.getNonce()))
    .add("symbol", this.instrument)
    .add("amount", new BigDecimal(0.1).toString())
    .add("price", new BigDecimal(0.14).toString())
    .add("exchange","bitfinex")
    .add("side", "sell")
    .add("type","exchange limit")
    .add("is_hidden","false") // .add("is_hidden",false) does not work either
    .build();
使用此代码,我无法使以下任何参数正常工作:

.add("is_hidden","false")
.add("is_postonly","true")
.add("ocoorder","false")
.add("buy_price_oco","0")
.add("sell_price_oco","0")
Bitfinex API文档少得令人沮丧。(他们自己的“尝试”示例只给出了HTTP403错误)。我发现了一个非常有用的例子,它显示了文档的前一个版本的截图,实际上给出了有效JSON的示例。阅读那些像素化的静止图像是我最终能够为自己工作的唯一方法


我是否遗漏了一些非常明显的信息?

您可以尝试打印响应消息以检查错误:

....
HttpResponse response = client.execute(request);
System.out.println(response.getStatusLine().toString());

BufferedReader rd = new BufferedReader(
  new InputStreamReader(response.getEntity().getContent()));

String line = "";
while ((line = rd.readLine()) != null) {
    System.out.println(line);
}

您可以尝试打印响应消息以检查错误:

....
HttpResponse response = client.execute(request);
System.out.println(response.getStatusLine().toString());

BufferedReader rd = new BufferedReader(
  new InputStreamReader(response.getEntity().getContent()));

String line = "";
while ((line = rd.readLine()) != null) {
    System.out.println(line);
}