Android的JSON获取URL内容
朋友们, 我在直接从给定的url解析json内容时遇到问题,但当我将相同的url内容作为文本文件存储在我的res/raw文件夹中时,它也会解析数据,但当从网络获取url内容时,它会显示一个异常(即 JSONArray文本必须以“[”开头,位于…的字符1处。 这里出什么问题了。帮我解决这个问题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\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...
}
}