URL与URLConnection怎么在Java项目中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>什么是URL 强>
- <李>
=统一资源标识符(URI中文释义为统一资源标志符
李> <李>URL=统一资源定位器、中文释义为统一资源定位符
李> <李>瓮=统一资源名称、中文释义为统一资源名称
李>它们之间的关系如下图所示:
URL URL =, new URL (“http://www.itmind.net/category/payment-selection/zhishixingqiu-jingxuan/"); System.out.println(“主持人:,“,+,url.getHost ()); System.out.println(“端口:“,+,url.getPort ()); System.out.println (“uri_path:,“, +, url.getPath ());//,输出//,主持人:www.itmind.net//,端口:1//,uri_path:/类别/付款选择/zhishixingqiu-jingxuan/
1)创建java.net.URL对象的方法非常简单,只需要一行代码。
URL URL =, new URL (URL地址),
URL对象是不可变的,因为URL类是最终的类型的,这样的好处就是保证它是“线程安全“的。
2)有了java.net.URL对象后,就可以获取URL相关的主机名,端口,路径等等。
url.getHost () url.getPort () url.getPath ()
<强> 02,什么是URLConnection 强>
URLConnection是一个抽象类,代表应用程序和URL之间的通信链接。它的实例可用于读取和写入此URL引用的资源。该类提供了比套接字类更易于使用,更高级的网络连接抽象。
怎么获取URLConnection对象呢?通过URL对象的openConnection()方法,示例如下。
URL URL =, new URL (“http://www.itmind.net"); URLConnection connection =, url.openConnection ();
如果URL协议为HTTP的话,返回的连接为URLConnection的子类HttpURLConnection。
有了URLConnection对象后,可以通过getInputStream()返回一个InputStream,由此读取URL所引用的资源数据(如果读取ASCII文本则为ASCII;如果读取HTML文件则为原始HTML,如果读取图像文件则为二进制图片数据等)。
我们来尝试读取一下小白学堂首页的内容,代码示例如下。
URL URL =, new URL (“http://www.itmind.net"); URLConnection connection =, url.openConnection (); try (InputStream =拷贝,connection.getInputStream ();), { ,ByteArrayOutputStream output =, new ByteArrayOutputStream (); ,byte [], buffer =, new 字节[1024]; ,int len =, 1; ,while ((len =, in.read(缓冲)),!=,1),{ ,output.write(缓冲区,,0,,len); ,} ,System.out.println (new 字符串(output.toByteArray ())); },catch (IOException e), { ,e.printStackTrace (); }
可以使用try-with-resource获取InputStream,该类实现了AutoCloseable接口,可以在内容读取完毕后自动关闭输入流。
打印的内容如下图所示(部分):
<李>
URLConnection提供了对HTTP头部的访问;
李> <李>URLConnection可以配置发送给某个URL的请求参数;