【问题标题】:Can anyone identify what i'm doing wrong with this API request? [duplicate]谁能确定我在处理这个 API 请求时做错了什么? [复制]
【发布时间】:2021-03-04 21:03:28
【问题描述】:

我是 REST API 的新手,我正在尝试使用 Tradier API 中的 Get Quotes 方法来检索有关特定公司的市场数据。该请求用下面的代码返回响应 400。以下是 API 文档的链接:https://documentation.tradier.com/brokerage-api/markets/get-quotes

try {
        // MAKE REQUEST TO API
        URL url = new URL("https://sandbox.tradier.com/v1/markets/quotes");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestProperty("Authorization", "Bearer <token>");
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Accept", "application/json");
        connection.addRequestProperty("symbols", "AAPL");
        connection.connect();

        // GET INPUT STREAM RESPONSE FROM REQUEST
        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("UTF-8")));

        // TAKING BITS AND BYTES FROM BUFFERED READER TO BUILD IT INTO A STRING OBJECT
        StringBuilder json = new StringBuilder();

        String line;
        while ((line = br.readLine()) != null) {
            json.append(line);
        }

        JSONObject obj = new JSONObject(json.toString());
        System.out.println(obj);

    } catch (Exception ex) {
        System.out.println(ex.getMessage());
    }

【问题讨论】:

  • 那些文档向您展示了一个 Java 示例,为什么不复制它呢?
  • 如果我无法使用 HttpURLConnection 解决问题,我会尝试这样做。我试图这样做,因为这是我的教授用她在课堂上使用的 API 演示它的方式
  • 400错误返回的信息是什么?
  • 注意:您可能想从问题中删除您的 api 令牌

标签: java api rest


【解决方案1】:

(第一种方法)

将您的网址更改为:--

“https://api.tradier.com/v1/markets/quotes?symbols=AAPL,VXX190517P00016000&greeks=false”(我的意思是手动添加)

(第二种方法)

或,

添加 RequestParam 如下代码:----

try{

 URL url = new URL("https://sandbox.tradier.com/v1/markets/quotes");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestProperty("Authorization", "Bearer <token>");
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Accept", "application/json");
    Uri.Builder builder = new Uri.Builder()
            .appendQueryParameter("symbols", "AAPL,VXX190517P00016000")
            .appendQueryParameter("greeks", "false");
    String query = builder.build().getEncodedQuery();
OutputStream os = connection.getOutputStream();
BufferedWriter writer = new BufferedWriter(
            new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();

connection.connect();
 // GET INPUT STREAM RESPONSE FROM REQUEST
        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName("UTF-8")));

        // TAKING BITS AND BYTES FROM BUFFERED READER TO BUILD IT INTO A STRING OBJECT
        StringBuilder json = new StringBuilder();

        String line;
        while ((line = br.readLine()) != null) {
            json.append(line);
        }

        JSONObject obj = new JSONObject(json.toString());
        System.out.println(obj);

    } catch (Exception ex) {
        System.out.println(ex.getMessage());
    }

第三种方法

try{
 final HttpUriRequest request = RequestBuilder
        .get("https://api.tradier.com/v1/markets/quotes")
        .addHeader("Authorization", "Bearer <TOKEN>")
        .addHeader("Accept", "application/json")
        .addParameter("symbols", "AAPL,VXX190517P00016000")
        .addParameter("greeks", "false")
        .build();

    final HttpResponse response = HttpClientBuilder.create().build().execute(request);
    final String jsonString = EntityUtils.toString(response.getEntity());
    final JsonNode json = new ObjectMapper().readTree(jsonString);
    
    System.out.println(response.getStatusLine().getStatusCode());
    System.out.println(json);}
catch(Exception ex){
ex.printStack();
}

【讨论】:

    猜你喜欢
    • 2017-09-29
    • 1970-01-01
    • 2015-04-11
    • 2022-12-17
    • 2011-10-10
    • 2022-07-06
    • 2013-06-05
    • 1970-01-01
    • 2020-01-14
    相关资源
    最近更新 更多