JSON获取Android的URL内容

时间:2011-01-18 12:20:13

标签: android json

友   我直接从给定http://samplejson.com/transactions.json的url解析json内容时遇到问题,但是当我将相同的url内容存储为我的res / raw文件夹中的文本文件时,它也解析数据,但是在获取url内容时从网上它显示一个例外(即) JSONArray文本必须以“[\ n”的字符1开头

这里有什么问题。帮助我解决这个问题


URL url_net = new URL("http://samplejson.com/transactions.json"); 
InputStream is = url_net.openStream(); 
byte [] buffer = new byte[is.available()]; 
while (is.read(buffer) != -1); 
String jsontext = new String(buffer); 
JSONArray entries = new JSONArray(jsontext); 
x = "JSON parsed.\nThere are [" + entries.length() + "]\n\n"; 
int i; 
for (i=0;i<entries.length();i++) { }

1 个答案:

答案 0 :(得分:10)

好的,您的代码似乎正在读取包括标头在内的所有HTTP。这就是为什么你的开头没有“[”。

以下是我用来获取HTTP GET的字符串内容的代码:

public static String getStringContent(String uri) throws Exception {

    try {
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet();
        request.setURI(new URI(uri));
        HttpResponse response = client.execute(request);
        InputStream ips  = response.getEntity().getContent();
        BufferedReader buf = new BufferedReader(new InputStreamReader(ips,"UTF-8"));

        StringBuilder sb = new StringBuilder();
        String s;
        while(true )
        {
            s = buf.readLine();
            if(s==null || s.length()==0)
                break;
            sb.append(s);

        }
        buf.close();
        ips.close();
        return sb.toString();

        } 
    finally {
               // any cleanup code...
            }
        }