Android的JSON获取URL内容

Android的JSON获取URL内容,android,json,Android,Json,朋友们, 我在直接从给定的url解析json内容时遇到问题,但当我将相同的url内容作为文本文件存储在我的res/raw文件夹中时,它也会解析数据,但当从网络获取url内容时,它会显示一个异常(即 JSONArray文本必须以“[”开头,位于…的字符1处。 这里出什么问题了。帮我解决这个问题 URL\u net=新URL(“http://samplejson.com/transactions.json"); InputStream is=url_net.openStream(); byte[

朋友们, 我在直接从给定的url解析json内容时遇到问题,但当我将相同的url内容作为文本文件存储在我的res/raw文件夹中时,它也会解析数据,但当从网络获取url内容时,它会显示一个异常(即 JSONArray文本必须以“[”开头,位于…的字符1处。

这里出什么问题了。帮我解决这个问题


URL\u net=新URL(“http://samplejson.com/transactions.json"); 
InputStream is=url_net.openStream();
byte[]buffer=新字节[is.available()];
while(is.read(buffer)!=-1);
String jsontext=新字符串(缓冲区);
JSONArray条目=新的JSONArray(jsontext);
x=“已解析JSON。\n有[“+条目的.length()+”]\n\n”;
int i;

对于(i=0;iOK),您的代码似乎正在读取所有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...
            }
        } 

好的,发布代码您必须从HTTP获取文本并加载JSON。我查看了JSON本身,一切正常。URL URL\u net=new URL(“);InputStream is=URL\u 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已解析。\n有[“+entries.length()+”]\n\n”;int i;for(i=0;i输入响应。
getEntity()
.getContent(),它引用HTTP有效负载。更干净的方法是使用
String content=client.execute(请求,新BasicResponseHandler())
,节省了十几行:)谢谢Dave。我不知道BasicResponseHandler()。谢谢你的回答。我得到了解决方案。
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...
            }
        }