Я начинаю с JAVA с API.Начальное значение JSONArray должно быть строкой или коллекцией или массивом
Ответ Что я получаю во время моей программы следующим образом:
* Объект ответа:
{
"statusLine":{
"reasonPhrase":"OK",
"protocolVersion":{},
"statusCode":200
},
"protocolVersion":{},
"locale":"en_IN",
"entity":{
"repeatable":false,
"content":{}
}
}
Возникло исключение. Начальное значение JSONArray должно быть строкой или коллекцией или массивом. *
Невозможно получить полные полные значения в результатах. Я получаю только данные заголовка.
Пожалуйста, помогите мне получить полную информацию об API. используя JAVA
package IOT;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
import org.json.JSONObject;
import org.json.JSONArray;
public class HttpPostWithBody {
public static void main(String args[]) {
String Message = "6f2159f998";
try {
new HttpPostWithBody().sendJSONData(Message);
} catch (Exception E) {
System.out.println("Exception Occured. " + E.getMessage());
}
}
public String sendJSONData(String message) throws Exception {
Map< String, Object> jsonValues = new HashMap< String, Object>();
{
jsonValues.put("thing_key", message);
jsonValues.put("from", "2016/08/29 16:55:00");
jsonValues.put("to", "2016/08/29 17:05:00");
jsonValues.put("time_zone", "Mumbai");
jsonValues.put("time_format", "str");
jsonValues.put("per", 50);
//jsonValues.put("metrics", "1st data");
}
JSONObject json = new JSONObject(jsonValues);
String url = "https://api.datonis.io/api/v3/datonis_query/thing_data";
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
post.setHeader("Content-Type", "application/json");
post.setHeader("Accept", "application/json");
post.setHeader("X-Auth-Token", "YZ0Sa7IfpdtAXQQ-2CNeAg");
StringEntity entity = new StringEntity(json.toString(), "UTF8");
System.out.println("This is the entity: " + entity);
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(json.toString());
String prettyJsonString = gson.toJson(je);
System.out.println("Pretty Json: " + prettyJsonString);
entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(entity);
//this is your response:
HttpResponse response = client.execute(post);
JSONObject jo = new JSONObject(response);
System.out.println("Object Response: " + jo);
JSONArray ab = new JSONArray(response);
JSONObject cd = ab.getJSONObject(0);
System.out.println("Array Response: " + cd);
System.out.println("Array Response: " + jo.getJSONArray("6f2159f998"));
System.out.println("Connection Status: " + response.getStatusLine());
return response.getStatusLine().toString();
}
}
У вас есть полная справка программы для этого, пожалуйста, –
@GaneshRavikumar К сожалению, нет полной ссылки программы. Возможно, вы можете использовать его с такими ключевыми словами, как Java JSON, и полностью понять использование Java JSON. Может быть, проще понять, что '' {} '' в данных JSON может быть представлен JSONObject в Java, а '' [] '' может быть представлен JSONArray в Java. – HaoChih
Я получаю только строку состояния. есть некоторые данные, которые нужно отображать. но они не видны в этой программе. Пожалуйста, помогите мне. –