Java URL对象初始化以及通过URL或者URLConnection读取内容

一、URL层次。

URL对象的创建。

1、public URL(String spec);

URL urlbase=new URL("http://my.oschina.net/u/2308739/admin/new-blog.html");

2、public URL(URL context,String spec);

URL urlbase=new URL("http://my.oschina.net/u/2308739/admin/");

URL indexUrl=new URL(urlbase,"new-blog.html");

3、public URL(String protocol,String host,String file);

通过协议名、主机名、文件名构造一个URL对象。

new URL("http","http://my.oschina.net","/u/2308739/admin/new-blog.html");

4、public URL(String protocol,String host,int port,String file);

通过协议名、主机名、端口号,文件名构造一个URL对象。

new URL("http","http://my.oschina.net",80,"/u/2308739/admin/new-blog.html");

二、通过URL读取内容

通过URL的openstream()方法,得到Java.io.inputstream类的对象,从该输入流中读取URL地址的内容。

这个方法的定义是:

public final Inputstream openstream() throws IOException;

三、实例通过访问URL获取内容

package com.yuan.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

public class TestUrl {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
	               //String accessurlString=URLEncoder.encode("http://www.ifeng.com/", "utf-8");
				
			URL ifeng=new URL("http://www.ifeng.com/");

	               BufferedReader bReader=new 
	               BufferedReader(new InputStreamReader(ifeng.openStream()));//通过URL的openstrea//m()将数据转换为inputstream
		    String inputlineString;
		    while((inputlineString=bReader.readLine())!=null){
		    	System.out.println(inputlineString);	
		    }
		    bReader.close();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

四、实例通过访问URLConnection读取内容

通过对一个指定的URL之间建立一个连接,然后对该资源进行读写操作。

URLConnection重要的获取连接的输入/输出流的方法。

Inputstream getInputstream()

Outputstream getOutputStream()

package com.yuan.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

public class TestUrl {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
	         //String accessurlString=URLEncoder.encode("http://www.ifeng.com/", "utf-8");
				
			URL ifeng=new URL("http://www.ifeng.com/");
            URLConnection urlConnection=ifeng.openConnection();
			BufferedReader bReader=new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
		    String inputlineString;
		    while((inputlineString=bReader.readLine())!=null){
		    	System.out.println(inputlineString);	
		    }
		    bReader.close();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

五、实例通过URLConnection写内容


package com.yuan.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.commons.io.IOUtils;

public class TestUrlConnetion {
		public static void main(String[] args){
			try{
			      // Configure and open a connection to the site you will send the request
				URL url = new URL("http://wx.tclha.com/login.do");
				URLConnection urlConnection = url.openConnection();
			
				// 设置doOutput属性为true表示将使用此urlConnection写入数据
				urlConnection.setDoOutput(true);
				// 定义待写入数据的内容类型,我们设置为application/x-www-form-urlencoded类型
				urlConnection.setRequestProperty("content-type", "application/x-www-form-urlencoded");
				HttpURLConnection httpURLConnection = (HttpURLConnection)urlConnection;//httpurlconection 有可以获得返回状态值的方法。
				/****httpurlconnetion一些配置属性*httpURLConnection.setDoOutput(true);
                                httpURLConnection.setRequestMethod("POST");
                                httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
                                httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        httpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameterData.length()));****/
				// 得到请求的输出流对象
				OutputStreamWriter out = new OutputStreamWriter(httpURLConnection.getOutputStream());
				// 把数据写入请求的Body
				out.write("userName=yuanw&passWord=121212");
				out.flush();
				out.close();
				System.out.println("ResponseCode:"+httpURLConnection.getResponseCode());
				if (httpURLConnection.getResponseCode() >= 300) {
		            System.out.println("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
		        }
				// 从服务器读取响应
				InputStream inputStream = urlConnection.getInputStream();
				String encoding = urlConnection.getContentEncoding();
				System.out.println("encoding:"+encoding);
				String body = IOUtils.toString(inputStream, "utf-8");
				System.out.println(body);
			}catch(IOException e){
				Logger.getLogger(TestUrlConnetion.class.getName()).log(Level.SEVERE, null, e);
			}
		}
	}

更多内容参考博文:

参考博文:http://www.cnblogs.com/nick-huang/p/3859353.html

转载于:https://my.oschina.net/u/2308739/blog/410562

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值