[英]HTTPResponse as JSON in Java
我試圖從HTTP響應中獲取JSONObject。
try
{
GetMethod postMethod = new GetMethod();
postMethod.setURI(new URI(url, true));
postMethod.setRequestHeader("Accept", "application/json");
httpClient.executeMethod(postMethod);
String resp=postMethod.getResponseBodyAsString();
org.json.JSONTokener tokener = new org.json.JSONTokener(resp);
finalResult = new org.json.JSONArray(tokener);
return finalResult;
}
但我收到了運行時警告
去緩沖大或未知大小的響應體。 建議使用
getResponseBodyAsStream
。
我應該按照JVM的建議獲得響應嗎? 如果是這樣,我怎么能解析它的JSON?
您的服務器是否已設置為通知客戶其響應有多大? 如果沒有,您的服務器正在流式傳輸數據,從技術上講,無法確定處理響應需要多少緩沖區空間,因此需要警告某些潛在危險的事情正在發生。
您可以使用Java EE 7輕松生成JSonObject。示例代碼。
JsonReader reader = Json.createReader(new URI(url, true));
JsonObject jsonObject=reader.readObject();
有關詳細信息,請轉到鏈接。 http://docs.oracle.com/javaee/7/tutorial/doc/jsonp003.htm#BABHAHIA
如果你想從服務器發送jsonObjects
假設(tomcat服務器)
對於服務器端 -
創建jsonobjects
-
我已經調用toJson()
來創建jsonobjects
這是實現 -
final JSONObject arr = new JSONObject();
for (int i = 0; i < contactStatus.size(); i++) {
ContactStatus contactObject = contactStatus.get(i);
try {
arr.put(String.valueOf(i), toJson(value1, value2,, value3));
} catch (JSONException e) {
catch block e.printStackTrace();
}
}
//Here we serialize the stream to a String.
final String output = arr.toString();
response.setContentLength(output.length());
out.print(output);//out is object of servlet output stream.
public static Object toJsonForContact(String value1, boolean value2, double value3) throws JSONException {
JSONObject contactObject = new JSONObject();
contactObject.put("id", id);
contactObject.put("status", value1);
contactObject.put("distance", value2);
contactObject.put("relation", value3);
return contactObject;
}
所以你的jsonobjects
已准備好發送我們將這些對象寫入ServletoutputStream
。
在客戶方面 -
while ((ReadResponses = in.readLine()) != null) {
Constants.Response_From_server = ReadResponses;
if (Constants.Response_From_server.startsWith("{")) {
ListOfContactStatus = new ArrayList<ContactStatus>();
ContactStatus contactStatusObject;
try {
JSONObject json = new JSONObject(Constants.Response_From_server);
for (int i = 0; i < json.length(); i++) {
contactStatusObject = new ContactStatus();
JSONObject json1 = json.getJSONObject(String.valueOf(i));
System.out.println("" + json1.getString("id"));
System.out.println("" + json1.getBoolean("status"));
System.out.println("" + json1.getDouble("distance"));
contactStatusObject.setId(json1.getString("id"));
contactStatusObject.setStatus(json1.getBoolean("status"));
contactStatusObject.setDistance((float) json1.getDouble("distance"));
ListOfContactStatus.add(contactStatusObject);
System.out.println("HTTPTransport:sendMessage Size of ListOfContactStatus" + ListOfContactStatus.size());
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.