我正在从其他API获取ID,这些API到达该API的端点。 我正在从该API获取动态ID。 现在,在我已发布的这段代码中,我应该发送一个请求主体,该主体应接受从其他API中获取的动态ID,该ID将存储在 str 中,并迭代直到ID的长度并得到每个ID的JSON响应。
for(int i=0;i<array.length();i++)
{
str.add(array.getJSONObject(i).getString("id"));
}
for(String s:str)
{
HttpPost request1 = new HttpPost("/2.0/clusters/events");
//StringEntity params=new StringEntity(array[i]);
***StringEntity params =new StringEntity("{\"id\":\"+s+\"}");***
//main concern to send dynamic ID as a body
request1.addHeader("Authorization",bearerToken);
request1.addHeader("content-type", "application/json");
request1.addHeader("Accept","application/json");
request1.setEntity(params);
System.out.println(params);
HttpResponse response1 = httpClient.execute(request1);
System.out.println("Response Code:" +
response1.getStatusLine().getStatusCode());
String json1 = EntityUtils.toString(response1.getEntity());
System.out.println(json1);
JSONObject event = new JSONObject(json1);
JSONArray arrays=event.getJSONArray("events");
for (int k=0;k< arrays.length();k++){
JSONObject ids = arrays.getJSONObject(k);
System.out.println(ids.get("id").toString());
System.out.println(ids.get("timestamp").toString());
System.out.println(ids.get("type").toString());
System.out.println(ids.get("details").toString());
}
}
主要问题是如何使用String Entity或任何其他使用JAVA作为请求正文动态发送值。 我应该为每个ID提取ID及其存放位置,直到长度。
答案 0 :(得分:0)
如果我正确理解了您的问题,那么您想知道如何使用StringEntity存储您的请求参数。您可以按以下方式使用它:
StringEntity param = new StringEntity("id=" + s);
很抱歉,如果我误解了您的问题,请告诉我您所关注问题的更多详细信息。
答案 1 :(得分:0)
Hury的答案几乎是正确的。但是,当您要发送JSON字符串时,您应该:
StringEntity params =new StringEntity("{\"id\":\""+ s + "\"}");
您可以通过params.writeTo(System.out);
或使用org.json库:
StringEntity params =new StringEntity(new org.json.JSONObject().put("id",s).toString());
以上两种方法都将输出类似于以下内容的字符串:
{"id":"aaaa"}
答案 2 :(得分:0)
JSONObject jsonObj =新的JSONObject();
jsonObj.put(“ id”,s);
request1.setEntity(jsonObj);