这是获取频道概要的twitch.tv api请求:
我使用apache HttpClient发送请求并接收响应,并使用JSON-Simple解析JSON内容。
以下是我根据api尝试从响应中获取JSON的方法:
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}
,但执行以上示例会导致:在位置0处出现意外字符(<)。
如何从响应中获取JSON主体? 浏览器正确显示结果。
builder
的内容,并查看服务器发送给您的内容 - "<
at position 0" 可能是XML响应而不是JSON,或者它可能是HTML错误页面。 - Ian Roberts