String s="http://www.some.com"; //设定一个url字串
try{
URL url=new URL(s); //初始化一个URL对象
}catch(MalformedURLException e){ //如果字串不是合法的url,则抛出异常
e.printStackTrace();
}

解决方案 »

  1.   

    import java.net.*;
    public class TestUrl
    {
    public static void main(String args[])
    {
    try
    {
    URL url=new URL("http://community.csdn.net/Expert/topic/3564/3564496.xml?temp=.6232416");
    System.out.println(url.getProtocol()+"  "+url.getHost()+"  "+url.getPort()+"  "+url.getPath()+"  "+url.getQuery()+"  "+url.getRef());
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    }你得自己分析protocal,host,path等等是否合乎要求。
    另外,chanceqw兄,如果URL url=new URL("http://www.我是非法的.com");并不会抛出异常。
      

  2.   

    我回答的是url字串是否合法,至于一个url是否存在,用
    InputStream is=url.openStream();
    如果不可达,则会抛出IOException
      

  3.   

    事实上,"http://www.我是非法的.com"并不是一个非法的url,只不过这个url不存在罢了,就是说连不上
    这和"http://www.google.com/一个不存在的页面.htm"是类似的,只不过不存在而已。
      

  4.   

    当然得自己通过检验字符串的合法性来验证url的合法性
      

  5.   

    chanceqw,我对URL是否合法这点还不是很清楚。
    下面这个URL也应该是合法的吧?
    http:
      

  6.   

    还有类似的http:dfsfsf这种也是合法的URL吧?因为没异常抛出。
      

  7.   

    关于url可以看这里
    http://archive.ncsa.uiuc.edu/SDG/Software/Mosaic/Demo/url-primer.html以下的都可以是合法的url
    gopher://gopher.yoyodyne.com/
    news:rec.gardening
    http://www.yoyodyne.com:1234/pub/files/foobar.html
    /E:/some_folder/some_file.txt没有抛出异常的都可以认为是wellformed,但是wellformed并不一定是有效的
    其实"http:dfsfsf"、甚至"http:"完全符合url字串的规则,只不过它不是一个有效的HTTP URL字串
    url并非单纯指http的链接。所以,如果只是用于http,因为范围缩小,那只好自己先验证(可以使用正则表达式),然后再提交给URL看看是否可达了