码迷,mamicode.com
首页 > Web开发 > 详细

正常下载与URLConnection 六(64)

时间:2015-05-19 20:33:22      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

一 正常下载

服务使用断点下载时,响应的信息是206。

       UrlConnection - HttpurlConnection。-通过URL来获取urlconnection实例。

正常下载示例

package cn.demo;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.URL;
public class CommonDown {
    public static void main(String[] args) throws Exception {
        String path = "http://localhost:6666/day22_cos/up/video.avi";
        URL url = new URL(path);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("GET");
        con.setDoInput(true);
        con.connect();
        int code = con.getResponseCode();
        System.err.println(code);
        if (code == 200) {
            //获取文件大小
            long size = con.getContentLength();
            System.err.println("总大小是:"+size);
            //声明下载到的字节
            long sum=0;
            BigDecimal bd = new BigDecimal(0D);
            double already = 0D;
            InputStream in = con.getInputStream();
            byte[] b = new byte[1024];
            int len = -1;
            OutputStream out = new FileOutputStream("d:/a/video.avi");
            while ((len = in.read(b)) != -1) {
                out.write(b, 0, len);
                sum=sum+len;
                double percent = ((double)sum)/((double)size);
                percent*=100;
                bd = new BigDecimal(percent);
                bd = bd.divide(new BigDecimal(1),0,BigDecimal.ROUND_HALF_UP);
                if(bd.doubleValue()!=already){
                    System.err.println(bd.intValue()+"%");
                    already=bd.doubleValue();
                }
            }
            out.close();
        }
    }
}

 

二 URLConnection

此类用于在java代码中模拟浏览器组成http协议向服务发请求(get/post)。

 

代码:
package cn.hx;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class OneServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse resp)
            throws ServletException, IOException {
        String name = request.getParameter("name");
        System.err.println("这是get、、、、"+name);
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().print("你好:"+name);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse resp)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("name");
        System.err.println("这是post请求......."+name);
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().print("你好:"+name);
    }

}

 

 

 

用urlconnection访问oneSerlvet

 

package cn.demo;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.junit.Test;
public class Demo {
    /**
     * 发送get请求
     * @throws Exception
     */
    @Test
    public void testConn() throws Exception{
        //第一步:声明url
        String urlPath = "http://localhost:6666/day22_cos/OneServlet?name=Jack";
        //第二步:声明URL对象
        URL url = new URL(urlPath);
        //第三步:从url上获取连接
        HttpURLConnection con=  (HttpURLConnection) url.openConnection(); 
        //第四步:设置访问的类型
        con.setRequestMethod("GET"); 
        //第五步:设置可以向服务器发信息。也可以从服务器接收信息
        con.setDoInput(true); //也可以从服务器接收信息
        con.setDoOutput(true); //设置可以向服务器发信息
        //第六步:连接
        con.connect();
        //7:检查连接状态
        int code = con.getResponseCode(); 
        if(code==200){
            //8:从服务器读取数据
            InputStream in = con.getInputStream();
            byte[] b = new byte[1024];
            int len = 0;
            while((len=in.read(b))!=-1){
                String s = new String(b,0,len,"UTF-8");
                System.err.print(s);
            }
        }
        //9:断开
        con.disconnect();
    }
    /**
     * 以下发送post请求
     */
    @Test
    public void post() throws Exception{
        //第一步:声明url
        String urlPath = "http://localhost:6666/day22_cos/OneServlet";
        //第二步:声明URL对象
        URL url = new URL(urlPath);
        //第三步:从url上获取连接
        HttpURLConnection con=  (HttpURLConnection) url.openConnection();
        //第四步:设置访问的类型
        con.setRequestMethod("POST");
        con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
         //第五步:设置可以向服务器发信息。也可以从服务器接收信息
        con.setDoInput(true);//设置可以向服务器发信息
        con.setDoOutput(true);//也可以从服务器接收信息
        //第六步:发信息
        //获取输出流
        OutputStream out = con.getOutputStream();
        out.write("name=张三".getBytes("UTF-8")); 
        
        
        //7:检查连接状态
        int code = con.getResponseCode();
        if(code==200){
            //8:从服务器读取数据
            InputStream in = con.getInputStream();
            byte[] b = new byte[1024];
            int len = 0;
            while((len=in.read(b))!=-1){
                String s = new String(b,0,len,"UTF-8");
                System.err.print(s);
            }
        }
        //9:断开
        con.disconnect();
    }
}

 

正常下载与URLConnection 六(64)

标签:

原文地址:http://www.cnblogs.com/zhenghongxin/p/4514040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!