JSON:“位置 0 处出现意外字符 (<)"; [英] JSON: "Unexpected character (<) at position 0"

查看:26
本文介绍了JSON:“位置 0 处出现意外字符 (<)";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是获取频道摘要的 twitch.tv api 请求:http://api.justin.tv/api/streams/summary.json?channel=mychannel.如果我通过浏览器发布它,我会得到正确的结果.但以编程方式,我在结果解析期间收到异常.

Here's the twitch.tv api request to get channel summary: http://api.justin.tv/api/streams/summary.json?channel=mychannel. If I post it via browser, I get correct results. But programmatically I receive an exception during result parsing.

我使用 apache HttpClient 发送请求和接收响应.和 JSON-Simple 解析 JSON 内容.

I use apache HttpClient to send requests and receive responses. And JSON-Simple to parse JSON content.

这是我尝试根据 api 从响应中获取 JSON 的方式:

This is how I try to get JSON from response according to api:

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.

Expected result: {"average_bitrate":0,"viewers_count":"0","streams_count":0}, but execution of example above leads to: Unexpected character (<) at position 0.

如何从响应中获取 JSON 正文?浏览器显示结果正确.

How to get JSON body from response? Browser displays the result correct.

推荐答案

试试这个:

        URL url = new URL("http://api.justin.tv/api/stream/summary.json?channel=mychannel");
        HttpURLConnection request1 = (HttpURLConnection) url.openConnection();
        request1.setRequestMethod("GET");
        request1.connect();
        InputStream is = request1.getInputStream();
        BufferedReader bf_reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
        String line = null;
        try {
            while ((line = bf_reader.readLine()) != null) {
                sb.append(line).append("\n");
            }
        } catch (IOException e) {
        } finally {
            try {
                is.close();
            } catch (IOException e) {
            }
        }
        String responseBody = sb.toString();
        JSONParser parser = new JSONParser();
        Object obj = parser.parse(responseBody);
        System.out.println(obj);

这篇关于JSON:“位置 0 处出现意外字符 (&lt;)";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆