public void getHtmlFromURL2(String str) {try {URL url = new URL(str);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setDoInput(true);conn.connect();InputStream is = conn.getInputStream();BufferedInputStream bis = new BufferedInputStream(is);ByteArrayBuffer baf = new ByteArrayBuffer(100);int current = 0;while ((current = bis.read()) != -1) {baf.append((byte) current);}is.close();conn.disconnect();URL_DATA = newString(baf.toByteArray(), "utf-8");} catch (Exception e) {URL_DATA = e.getMessage();}}
上面是源代码,当我第一次调用可以传入网纸是http://musicapi.sinaapp.com/s.php?q=练习 刘德华&callback=? 
是可以返回正确的Json数据,[{"url":"http://zhangmenshiting.baidu.com/data2/music/5403280/5403280.mp3?xcode=1c24a1233425ad0b586066d0145f7207&mid=0.81987216767637"},{"url":"http://zhangmenshiting2.baidu.com/data2/music/1441450/1441450.mp3?xcode=1c24a1233425ad0b586066d0145f7207&mid=0.81987216767637"}]%但我点击第二首歌比如是 http://musicapi.sinaapp.com/s.php?q=暗里首迷 刘德华&callback=? 
返回的数据还是原来的“练习”的下载地址[{"url":"http://zhangmenshiting.baidu.com/data2/music/5403280/5403280.mp3?xcode=1c24a1233425ad0b586066d0145f7207&mid=0.81987216767637"},{"url":"http://zhangmenshiting2.baidu.com/data2/music/1441450/1441450.mp3?xcode=1c24a1233425ad0b586066d0145f7207&mid=0.81987216767637"}]%E9%97%AE+%E6%A2%81%E9%9D%99%E8%8C%B9&callback而且在后面加了%E9%97%AE+%E6%A2%81%E9%9D%99%E8%8C%B9&callback
导致下面的解析出错。请问一下是什么原因呢?

解决方案 »

  1.   


    public void getHtmlFromURL2(String str) {
    String URL_DATA=null;
    try { URL url = new URL(str); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); ByteArrayBuffer baf = new ByteArrayBuffer(100); int current = 0; while ((current = bis.read()) != -1) { baf.write((byte) current);

    } is.close(); conn.disconnect(); URL_DATA = new String(baf.toByteArray(), "utf-8");
    System.out .print(URL_DATA); } catch (Exception e) { URL_DATA = e.getMessage(); }

    }