Tên bài viết: Tutorial Java URL(Xử lý URL)
Tác giả: Quang IT
Cấp độ bài viết: Chưa đánh giá
Tóm tắt:
Phần này cho bạn thấy làm thế nào để viết các chương trình Java giao tiếp với một URL. URL có thể được chia nhỏ thành các phần như sau:
protocol://host:port/path?query#ref
Ví dụ các giao thức HTTP, HTTPS, FTP, File. Phần này cũng được gọi là tên tập tin, và máy chủ cũng được gọi là authority(cấp quyền).
Sau đây là một URL cho một trang web có giao thức là HTTP:
http://dotnet.dngaz.com
Chú ý rằng URL không chỉ định một cổng, trong trường hợp các cổng mặc định cho giao thức được sử dụng. Với HTTP, cổng mặc định là 80.
Phương thức Class URL
Lớp java.net.URL đại diện cho URL và có bộ hoàn chỉnh các phương thức để thao tác URL trong Java.
Lớp URL có vài constructor để tạo ra các URL, bao gồm:
1. public URL(String protocol, String host, int port, String file) throws MalformedURLException.
Tạo ra một URL bằng cách ghép các phần nhất định.
2. public URL(String protocol, String host, String file) throws MalformedURLException
Giống hệt các constructor trước đó, ngoại trừ cổng mặc định cho giao thức được sử dụng.
3. public URL(String url) throws MalformedURLException
Tạo ra một URL từ String nhất định
4. public URL(URL context, String url) throws MalformedURLException
Tạo ra một URL bằng cách phân tích cùng các URL và các đối số chuỗi
Các lớp URL có chứa nhiều phương thức để truy cập vào các phần khác nhau của URL. Một số phương thức trong lớp URL:
1. public String getPath()
Trả về đường dẫn URL.
2. public String getQuery()
Trả về phần truy vấn của URL.
3. public String getAuthority()
Trả về quyền của URL
4. public int getPort()
Trả về cổng của URL.
5. public int getDefaultPort()
Trả về cổng mặc định cho giao thức của URL.
6. public String getProtocol()
Trả về giao thức của URL.
7. public String getHost()
Trả về máy chủ của URL.
8. public String getFile()
Trả về tên tập tin của URL.
9. public String getRef()
Trả về tham chiếu một phần của URL.
10. public URLConnection openConnection() throws IOException
Mở một kết nối vào URL, cho phép máy khách giao tiếp với nguồn tài nguyên.
Ví dụ:
Chương trình URLDemo sau đây thể hiện các phần khác nhau của một URL. URL được nhập trên dòng lệnh, và chương trình URLDemo đưa ra kết quả từng phần của URL.
// File Name : URLDemo.java
import java.net.*;
import java.io.*;
public class URLDemo
{
public static void main(String [] args)
{
try
{
URL url = new URL("http://dotnet.dngaz.com");
System.out.println("URL is " + url.toString());
System.out.println("protocol is "
+ url.getProtocol());
System.out.println("authority is "
+ url.getAuthority());
System.out.println("file name is " + url.getFile());
System.out.println("host is " + url.getHost());
System.out.println("path is " + url.getPath());
System.out.println("port is " + url.getPort());
System.out.println("default port is "
+ url.getDefaultPort());
System.out.println("query is " + url.getQuery());
System.out.println("ref is " + url.getRef());
}catch(IOException e)
{
e.printStackTrace();
}
}
}
Hiển thị kết quả:
Phương thức Class URLConnections
OpenConnection () trả về một java.net.URLConnection, lớp trừu tượng mà lớp con đại diện cho các loại khác nhau của kết nối URL.
Ví dụ:
Nếu bạn kết nối đến một URL có giao thức là HTTP, các openConnection () trả về một đối tượng HttpURLConnection.
Nếu bạn kết nối đến một URL đại diện cho một tập tin JAR, openConnection () trả về một đối tượng JarURLConnection.
vv ..
Lớp URLConnection có nhiều phương thứcđể thiết lập hoặc xác định thông tin về kết nối, bao gồm:
1. Object getContent()
Lấy nội dung của kết nối URL.
2. Object getContent(Class[] classes)
Lấy nội dung của kết nối URL.
3. String getContentEncoding()
Returns the value of the content-encoding header field.
4. int getContentLength()
Returns the value of the content-length header field.
5. String getContentType()
Returns the value of the content-type header field.
6. int getLastModified()
Returns the value of the last-modified header field.
7. long getExpiration()
Returns the value of the expires header field.
8. long getIfModifiedSince()
Returns the value of this object's ifModifiedSince field.
9. public void setDoInput(boolean input)
Passes in true to denote that the connection will be used for input. The default value is true because clients typically read from a URLConnection.
10. public void setDoOutput(boolean output)
Passes in true to denote that the connection will be used for output. The default value is false because many types of URLs do not support being written to.
11. public InputStream getInputStream() throws IOException
Returns the input stream of the URL connection for reading from the resource.
12. public OutputStream getOutputStream() throws IOException
Returns the output stream of the URL connection for writing to the resource
13. public URL getURL()
Returns the URL that this URLConnection object is connected to
Ví dụ:
Chương trình URLConnectionDemo sau kết nối đến một URL được nhập từ dòng lệnh.
// File Name : URLConnDemo.java
import java.net.*;
import java.util.Scanner;
import java.io.*;
public class URLConnDemo
{
public static void main(String [] args)
{
try
{
Scanner input =new Scanner(System.in);
String s=input.nextLine();
URL url = new URL(s);
URLConnection urlConnection = url.openConnection();
HttpURLConnection connection = null;
if(urlConnection instanceof HttpURLConnection)
{
connection = (HttpURLConnection) urlConnection;
}
else
{
System.out.println("Please enter an HTTP URL.");
return;
}
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String urlString = "";
String current;
while((current = in.readLine()) != null)
{
urlString += current;
}
System.out.println(urlString);
}catch(IOException e)
{
e.printStackTrace();
}
}
}
Hiển thị kết quả: