基于java URL和URLConnection(詳解)
URL類(lèi)將URL地址封裝成對(duì)象,提供了解析URL地址的方法,如獲取uri部分、host部分、端口等。
URLConnection則是URL對(duì)象和Socket連接給結(jié)合起來(lái)了,使得可以更輕松地獲取發(fā)起URL請(qǐng)求的連接套接字。
1.URL
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);
}
}
2.URLConnection
通過(guò)URL的openConnection()方法可以獲取URLConnection對(duì)象,這個(gè)對(duì)象是面對(duì)這個(gè)URL的連接。
也就是說(shuō),這個(gè)對(duì)象其實(shí)是一個(gè)已連接套接字,它不僅具有解析http響應(yīng)報(bào)文的功能,還具有套接字的相關(guān)功能(例如獲取輸入流、輸出流等)。
僅就解析對(duì)象來(lái)說(shuō),URL對(duì)象解析的是URL地址,可以看作是解析http請(qǐng)求報(bào)文(如getPort(),getFile()等),而URLConnection則解析的是http響應(yīng)報(bào)文(如getLastModified(),getHeaderFields()等)。
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響應(yīng)報(bào)文
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();
}
}
}
以上這篇基于java URL和URLConnection(詳解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中Object轉(zhuǎn)換為L(zhǎng)ist類(lèi)型的實(shí)現(xiàn)方法
這篇文章主要介紹了Java中Object轉(zhuǎn)換為L(zhǎng)ist類(lèi)型的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
java中Statement 與 PreparedStatement接口之間的關(guān)系和區(qū)別
這篇文章主要介紹了java中Statement 與 PreparedStatement接口之間的關(guān)系和區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
spring-core組件詳解——PropertyResolver屬性解決器
這篇文章主要介紹了spring-core組件詳解——PropertyResolver屬性解決器,需要的朋友可以參考下2016-05-05
java 抓取網(wǎng)頁(yè)內(nèi)容實(shí)現(xiàn)代碼
這篇文章主要介紹了java 抓取網(wǎng)頁(yè)內(nèi)容實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-02-02
Java Thread多線(xiàn)程開(kāi)發(fā)中Object類(lèi)詳細(xì)講解
這篇文章主要介紹了Java Thread多線(xiàn)程開(kāi)發(fā)中Object類(lèi),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-03-03

