URLConnection

创建连接

在java.net包中包含两个有趣的类:URL类和URLConnection类。

这两个类可以用来创建客户端到web服务器(HTTP服务器)的连接。

@Test
public void getTest() throws IOException {
    URL url = new URL("https://www.baidu.com/");
    URLConnection urlConnection = url.openConnection();
    InputStream input = urlConnection.getInputStream();
    int data = input.read();
    while(data != -1){
        System.out.print((char) data);
        data = input.read();
    }
    input.close();
}

日志信息

<!DOCTYPE html>
<!--STATUS OK-->
<html> 
    ...
</html>

Get 与 Post

默认情况下URLConnection发送一个HTTP GET请求到web服务器。如果你想发送一个HTTP POST请求,

要调用URLConnection.setDoOutput(true)方法,如下:

URL url = new URL("https://www.baidu.com/");
URLConnection urlConnection = url.openConnection();
urlConnection.setDoOutput(true);

一旦你调用了setDoOutput(true),你就可以打开URLConnection的OutputStream,如下:

OutputStream output = urlConnection.getOutputStream();

你可以使用这个OutputStream向相应的HTTP请求中写任何数据,但你要记得将其转换成URL编码(关于URL编码的解释,自行Google)

(译者注:具体名字是:application/x-www-form-urlencoded MIME 格式编码)。

当你写完数据的时候要记得关闭OutputStream。

从 URLs 到本地文件

URL也被叫做统一资源定位符。如果你的代码不关心文件是来自网络还是来自本地文件系统,URL类是另外一种打开文件的方式。

下面是一个如何使用URL类打开一个本地文件系统文件的例子:

URL url = new URL("file:/c:/data/test.txt");
URLConnection urlConnection = url.openConnection();
InputStream input = urlConnection.getInputStream();
int data = input.read();
while(data != -1){
    System.out.print((char) data);
    data = input.read();
}
input.close();

注意:这和通过HTTP访问一个web服务器上的文件的唯一不同处就是 URL。

JarURLConnection

实例代码

@Test
public void getTest() throws IOException {
    String urlString = "jar:file:/Users/houbinbin/.m2/repository/com/github/houbb/log-integration/1.1.3/log-integration-1.1.3.jar!/";
    URL jarUrl = new URL(urlString);
    JarURLConnection connection = (JarURLConnection) jarUrl.openConnection();
    Manifest manifest = connection.getManifest();
    JarFile jarFile = connection.getJarFile();
    //do something with Jar file...
    System.out.println(jarFile.getName());
}

参考资料

http://ifeve.com/java-netword-url-urlconnection/

http://ifeve.com/java-jarurlconnection/

https://blog.csdn.net/daweibalang717/article/details/46969899