URL類將URL地址封裝成對象,提供瞭解析URL地址的方法,如獲取uri部分、host部分、端口等。javascript
URLConnection則是URL對象和Socket鏈接給結合起來了,使得能夠更輕鬆地獲取發起URL請求的鏈接套接字。php
import java.net.MalformedURLException;
import java.net.URL;
public class URLDemo {
public static void main(String[] args) throws MalformedURLException {
URL url = new URL("http://192.168.0.124:8080/webapp/index.html?name=lisi");
int port = url.getPort();
String host = url.getHost();
String uri_path = url.getPath();
String request_file = url.getFile();
String query = url.getQuery();
System.out.println("host: "+ host);
System.out.println("port: "+ port);
System.out.println("uri_path: "+ uri_path);
System.out.println("request_file: "+ request_file);
System.out.println("query: "+ query);
}
}
經過URL的openConnection()方法能夠獲取URLConnection對象,這個對象是面對這個URL的鏈接。css
也就是說,這個對象實際上是一個已鏈接套接字,它不只具備解析http響應報文的功能,還具備套接字的相關功能(例如獲取輸入流、輸出流等)。html
僅就解析對象來講,URL對象解析的是URL地址,能夠看做是解析http請求報文(如getPort(),getFile()等),而URLConnection則解析的是http響應報文(如getLastModified(),getHeaderFields()等)。java
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class URLConnectionDemo {
public static void main(String[] args) {
try {
URL url = new URL("https://www.baidu.com/");
URLConnection urlc = url.openConnection();
System.out.println(urlc.getURL()); //解析http響應報文
InputStream is = urlc.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while((len=is.read(buf))!=-1) {
System.out.println(new String(buf,0,len));
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
注:若您以爲這篇文章還不錯請點擊右下角推薦,您的支持能激發做者更大的寫做熱情,很是感謝!nginx