这是获取频道摘要的 twitch.tv api 请求:http://api.justin.tv/api/streams/summary.json?channel=mychannel
。如果我通过浏览器发布它,我会得到正确的结果。但是以编程方式,我在结果解析期间收到异常。
我使用 apache HttpClient 发送请求和接收响应。和 JSON-Simple 来解析 JSON 内容。
这就是我尝试根据 api 从响应中获取 JSON 的方式:
HttpClient httpClient = HttpClients.createDefault();
HttpGet getRequest = new HttpGet(new URL("http://api.justin.tv/api/streams/summary.json?channel=mychannel").toURI());
getRequest.addHeader("Accept", "application/json");
HttpResponse response = httpClient.execute(getRequest);
BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String output;
StringBuilder builder = new StringBuilder();
while((output = br.readLine()) != null) {
builder.append(output);
}
br.close();
JSONParser parser = new JSONParser();
Object obj = parser.parse(builder.toString()); //Exception occurs here
预期结果:{"average_bitrate":0,"viewers_count":"0","streams_count":0}
,但执行上述示例会导致:Unexpected character (<) at position 0.
如何从响应中获取 JSON 正文?浏览器显示结果正确。