首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于获取网页源代码的有关问题!

2012-11-03 
关于获取网页源代码的问题!!public void getHtmlFromURL2(String str) {try {URL url new URL(str)Http

关于获取网页源代码的问题!!
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
导致下面的解析出错。请问一下是什么原因呢?


[解决办法]

Java code
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();        }                } 

热点排行