它的构造函数都可能引发MalformedURLException异常
URL(string spec)//url字符串
URL(String protocol,String host,int port,String file)协议名,主机名,端口号,资源本身的名称
URL(String protocol,String host,int port,String file,URLStreamHandler handler)协议处理器
public URL(URL context,String spec)已有的URL对象基础上加上相对的URL字符文本。对象资源+目录下的文件名。两者组合完整的
URL
//设置建立协议名和协议处理器
setURLStreamHeandlerFactory(URLStreamHandlerFactory fac)
createURLStreamHandler (String protocol)
通过openConnection方法返回URLConnection对象。就可以获取网络资源的内容
URLConnection
HttpURLConnection
所有set在没有建立连接前设置。
setRequestProperty方法设置请求消息头
在建立连接后就可以用get获取网络资源例如:
getHeaderFields方法读取响应消息头
getInputStream和getOutputStream
getHeaderField,getContentLength,getContentEncoding,getContentType
---------------------------------------------------------------------------------------------------------------------
每一个HttpURLConnection实例只能进行一次回话请求
只能发送一次请求,得到一次响应结果
一个HTTP连接可以被多个HttpURLConnection实例对象共享。
调用HttpURLConnection的disconnect方法可关闭底层共享网络。
getInputStream和getOutputStream只是关闭HttpURLConnection资源。
DEMO:
import java.net.*;
import java.io.*;
import java.util.*;
class GetGoogle
{
public static void main(String[] args) throws Exception
{
System.out.println("获取台湾繁体页面");
getContentByLanguange("zh-TW");
System.out.println("/n");
System.out.println("获取英文页面");
getContentByLanguange("en");
}
public static void getContentByLanguange(String country) throws Exception{
URL url=new URL("http://www.google.com.hk ");
HttpURLConnection uCon=(HttpURLConnection)url.openConnection();
uCon.setRequestProperty("Accept-Language",country);
//请求消息头
Map requests=uCon.getRequestProperties();
Set reqFields=requests.keySet();
Iterator itrReq= reqFields.iterator();
while(itrReq.hasNext()){
String field=(String) itrReq.next();
System.out.println(field+":"+uCon.getRequestProperty(field));
}
//uCon.connect();
//获取相应消息头
Map responses=uCon.getHeaderFields();
Set resFields=responses.keySet();
Iterator itrRes= resFields.iterator();
while(itrRes.hasNext()){
String field=(String) itrRes.next();
System.out.println(field+":"+uCon.getHeaderField(field));
}
//获取相应消息的实体内容
InputStream is= uCon.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String strLine=null;
while((strLine=br.readLine())!=null){
System.out.println(strLine);
}
br.close();
uCon.disconnect();
}
}