|
HttpURLConnection是java中用来进行网络连接的类,可以用来模拟浏览器执行一些网络相关操作。HttpURLConnection支持http协议中的get请求和post请求。可以用来模拟登陆或者爬取网页源代码获得数据等等。使用HttpURLConnection需要注意以下一些方面:
1.使用HttpURLConnection要记得释放IO资源,尤其是当调用getContentLength()方法获得文件长度,这时其实已经隐含的打开了io需要我们手动的再获得一次inputstream,然后在关闭这个inputstream。
2.使用HttpURLConnection时要注意设置超时,有两个设置方法setConnectTimeout()和setReadTimeout()这两个一定要设置,尤其是多次大量进行连接的时候更要设置这两个方法,否则容易造成程序在读某个连接的时候僵死在那,导致程序无法继续进行.
我们来看与其相关的一个类:
URL类:
URL(Uniform Resource Locator)统一资源定位符,可以直接使用此类找到互联网上的资源(如一个简单的网页)。URL类的常用方法:
●public URL(String spec) throws MalformedURLException 根据指定的地址实例化URL对象
●public URL(String protocol,String host,int port,String file) throws MalformedURLException 实例化URL对象,并指定协议、主机、端口名称、资源文件
●public URLConnection openConnection() throws IOException 取得一个URLConnection对象
●public final InputStream openStream() throws IOException 取得输入流
URLConnection
URLConnection是封装访问远程网络资源一般方法的类,通过它可以建立与远程服务器的连接,检查
远程资源的一些属性。此类的常用方法如下:
●public int getContentLength() 取得内容的长度
●public String getContentType() 取得内容的类型
●public InputStream getInputStream() throws IOException 取得连接的输入流
URLConnection对象可以通过URL类的openConnection()方法取得,下面通过URLConnection对象取得一个URL的基本信息。
例:取得URL的基本信息。
HttpURLConnection是java中用来进行网络连接的类,可以用来模拟浏览器执行一些网络相关操作。HttpURLConnection支持http协议中的get请求和post请求。可以用来模拟登陆或者爬取网页源代码获得数据等等。使用HttpURLConnection需要注意以下一些方面:
1.使用HttpURLConnection要记得释放IO资源,尤其是当调用getContentLength()方法获得文件长度,这时其实已经隐含的打开了io需要我们手动的再获得一次inputstream,然后在关闭这个inputstream。
2.使用HttpURLConnection时要注意设置超时,有两个设置方法setConnectTimeout()和setReadTimeout()这两个一定要设置,尤其是多次大量进行连接的时候更要设置这两个方法,否则容易造成程序在读某个连接的时候僵死在那,导致程序无法继续进行.
我们来看与其相关的一个类:
URL类:
URL(Uniform Resource Locator)统一资源定位符,可以直接使用此类找到互联网上的资源(如一个简单的网页)。URL类的常用方法:
●public URL(String spec) throws MalformedURLException 根据指定的地址实例化URL对象
●public URL(String protocol,String host,int port,String file) throws MalformedURLException 实例化URL对象,并指定协议、主机、端口名称、资源文件
●public URLConnection openConnection() throws IOException 取得一个URLConnection对象
●public final InputStream openStream() throws IOException 取得输入流
URLConnection
URLConnection是封装访问远程网络资源一般方法的类,通过它可以建立与远程服务器的连接,检查
远程资源的一些属性。此类的常用方法如下:
●public int getContentLength() 取得内容的长度
●public String getContentType() 取得内容的类型
●public InputStream getInputStream() throws IOException 取得连接的输入流
URLConnection对象可以通过URL类的openConnection()方法取得,下面通过URLConnection对象取得一个URL的基本信息。
例:取得URL的基本信息。
- package org.lxh.demo19.inetaddressdemo;
- import java.net.URL;
- import java.net.URLConnection;
- public class URLConnectionDemo {
- public static void main(String args[])throws Exception{
- URL url = new URL("http://localhost:8080/demo/Example/scripletdemo01.jsp");
- URLConnection urlCon = url.openConnection();//建立连接
- System.out.println("内容大小:"+ urlCon.getContentLength());
- System.out.println("内容类型:"+ urlCon.getContentType());
- }
- }
-
复制代码
输出:
内容大小:19
内容类型:text/HTML;charset=ISO-8859-1
URLEncoder与URLDecoder
在使用URL访问时,经常会看到在地址后会有很多其他的附带信息。从这些地址的附带信息上可以发现英文单词可以正常显示,但是对于中文,则会将其进行一系列的编码操作,在Java中如果要完成这样的编码和解码操作就必须使用URLEncoder与URLDecoder两个类。URLEncoder可以为传递的内容进行解码。这两个类的常用方法分别如下:
URLEncoder类的常用方法
●public static String encode(String s,String enc) throws UnsuppertedEncodingException
使用指定的编码机制将字符串转换为applicaion/x-www-form-urlencoded格式
URLDecoder类的常用方法
●public static String decode(String s,String enc) throws UnsuppertedEncodingException
使用指定的编码机制对applicaion/x-www-form-urlencoded字符串解码
例:编码及解码操作
- package org.lxh.demo19.inetaddressdemo;
- import java.net.URLDecoder;
- import java.net.URLEncoder;
- public class CodeDemo {
- public static void main(String args[])throws Exception{
- String keyWord = "baidu 狐狸";
- //对内容进行编码
- String encod = URLEncoder.encode(keyWord,"UTF-8");
- System.out.println("编码之后的内容:" + encod);
- //对内容进行解码
- String decod = URLDecoder.decode(encod,"UTF-8");
- System.out.println("解码之后的内容:" + decod);
- }
- }
-
复制代码
输出:
编码之后的内容:baidu+%E7%8B%90%E7%8B%B8
解码之后的内容:baidu 狐狸
以上程序将内容通过URLEncoder编码成UTF-8的形式,之后再通过URLDecoder按照UTF-8进行解码。
下面我们来看一个加强版的HttpUrlConnection例子:
- public static void main(String[] args) throws Exception{
- URL url = new URL("http://localhost:8080/SocketDemo/servlet/BK");
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
- conn.setReadTimeout(5000); //设置超时时间
- conn.setDefaultUseCaches(false); //默认不使用缓存
- conn.setDoInput(true); //允许从连接读取信息
- conn.setDoOutput(true); //允许向连接发送信息
- conn.setRequestMethod("POST");
- //取得输出流
- PrintWriter pw = new PrintWriter(conn.getOutputStream());
- //encode message
- String name = "name="+URLEncoder.encode("张三", "UTF-8");
- String pwd = "pwd="+URLEncoder.encode("123", "UTF-8");
- pw.print(name+"&"+pwd); //发送
- pw.close();
-
- System.out.println("=========== 信息已经发送===========");
-
- //读出响应数据
- InputStream ins = conn.getInputStream();
- BufferedReader br = new BufferedReader(new InputStreamReader(ins));
- String str = null;
- while((str=br.readLine())!=null){
- System.out.println(str);
- }
- ins.close();
-
- }
复制代码 |
|