gpt4 book ai didi

java - 如何在 java 中将复杂的 JSON 对象发送到 cURL 请求

转载 作者:行者123 更新时间:2023-11-30 06:52:47 25 4
gpt4 key购买 nike

我想将 JSONObject 发布到 https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate

和我使用 HttpPost 的 JAVA 代码

 String AccessToken = "ya29.Glv7A7pTaXdXn8EIHlMnGDBMt34OB72bmKowLFxVM7w7MTu7PRqVoBq7eGd0ljMtOk5aDM6y9WkCDdgZ113rzSzXQe6CZV3UXuNvkzWesAl6CfJoA2IZ9U2C9BaG";
JSONObject jobj = new JSONObject();
JSONObject jobj3 = new JSONObject();
jobj3.put("durationMillis", 86400000);
JSONObject jobj2 = new JSONObject();
jobj2.put("dataTypeName", "com.google.step_count.delta");
jobj2.put("dataSourceId", "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps");
JSONArray jar = new JSONArray();
jar.add(jobj2);
jobj.put("aggregateBy", jar);
jobj.put("bucketByTime", jobj2);
jobj.put("startTimeMillis", 1487721600000L);
jobj.put("endTimeMillis", 1487772000000L);

System.out.println("jobj" + jobj.toJSONString());

String ApiUrl = "https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate?access_token=" + AccessToken;
HttpClient httpclient = HttpClientBuilder.create().build();
try {
HttpPost httpPost = new HttpPost(ApiUrl);
httpPost.addHeader("Authorization", "Bearer " + AccessToken);
httpPost.setEntity(new StringEntity(jobj.toJSONString()));
//sets a request header so the page receving the request
//will know what to do with it
httpPost.setHeader("Content-type", "application/json");
HttpResponse response = httpclient.execute(httpPost);
System.out.println("\nSending 'GET' request to URL : " + ApiUrl);
HttpEntity entity = response.getEntity();
BufferedReader rd = new BufferedReader(
new InputStreamReader(entity.getContent()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println("line" + line);
}
} catch (Exception e) {
System.out.println("Exception at getDataFromUrl ,error is " + e.getMessage());
}

它给了我错误

 {"error":{"errors":[{"domain":"global","reason":"invalidArgument","message":"Bad Request"}],"code":400,"message":"Bad Request"}}

引用https://developers.google.com/fit/scenarios/read-daily-step-total

我是新手,有人可以帮助我吗?

最佳答案

您似乎发布了不正确的 JSON。您的代码生成的 JSON:

`

{
"endTimeMillis": 1487772000000,
"startTimeMillis": 1487721600000,
"bucketByTime": {
"dataSourceId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps",
"dataTypeName": "com.google.step_count.delta"
},
"aggregateBy": [
{
"dataSourceId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps",
"dataTypeName": "com.google.step_count.delta"
}
]
}

`

根据规范,bucketByTime 应为 "bucketByTime": { "durationMillis": 86400000 }

您似乎根本没有将代码中的 jobj3 变量添加到有效负载中,该变量将包含正确的 bucketByTime 值。

关于java - 如何在 java 中将复杂的 JSON 对象发送到 cURL 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42418556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com