{
"filename": "vcops-6.0.0-MPforAWS-1.1-1695068.pak",
"links": [
{
"rel": "pak_information",
"href": "https://<IP>:443/casa/upgrade/cluster/pak/MPforAWS-600/information"
},
{
"rel": "pak_file_information",
"href": "https://<IP>:443/casa/upgrade/slice/pak/MPforAWS-600/file_information"
},
{
"rel": "pak_cluster_status",
"href": "https://<IP>:443/casa/upgrade/cluster/pak/MPforAWS-600/status"
}
],
"pak_id": "MPforAWS-600"
}
我正在使用我们拥有的框架的一个帮助器。 Framework将响应返回为“InputStream”。
我想从这个“InputStream”获得“pak_id”。我试过inputStreamObj.toString()
这对我不起作用。
我使用的方法是:
private String getPakId(InputStream uploadResponse) {
String pakId = null;
try {
String responseString = readInputStream(uploadResponse);
JSONObject jObj = new JSONObject(responseString);
pakId = jObj.getString("pak_id").trim();
Reporter.log("Pak id is=" + pakId, true);
} catch (Exception e) {
Reporter.log("Error in getting pak_id " + e.getMessage(), true);
}
return pakId;
}
和
private String readInputStream(InputStream inputStream) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(
inputStream, "UTF-8"));
String tmp;
StringBuilder sb = new StringBuilder();
while ((tmp = reader.readLine()) != null) {
sb.append(tmp).append("\n");
}
if (sb.length() > 0 && sb.charAt(sb.length() - 1) == '\n') {
sb.setLength(sb.length() - 1);
}
reader.close();
return sb.toString();
}
答案 0 :(得分:2)
如果您查看InputStream的文档,您会发现它不会向您保证toString
会向您显示该流的内容。
如果你对实际流式传输不感兴趣(如果你希望响应很小,这是合理的,就像这里的情况一样),可以先从流中获取所有字节,放入将它们转换为String
,然后解析String
。
要从String
中取出InputStream
,我建议apache commons-io IOUtils.toString
{/ 1}}。
答案 1 :(得分:0)
如果您只想使用标准库pak_id
值:
InputStream is = ...
String line;
StringBuilder text = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
while((line = reader.readLine()) != null) {
text.append(line).append(" ");
}
String pakId = text.toString().replaceAll(".*\"pak_id\": \"([^\"]+)\".*", "$1");
答案 2 :(得分:0)
嗯,迟到总比没有好......以下对我有用:
JSONTokener tokener = new JSONTokener(new InputStreamReader(istream));
JSONObject result;
try {
result = new JSONObject(tokener);
} catch (JSONException e) {
// Handle me!
}