当前位置: 代码迷 >> Java相关 >> 通常下载与URLConnection 六(64)
  详细解决方案

通常下载与URLConnection 六(64)

热度:64   发布时间:2016-04-22 20:09:58.0
正常下载与URLConnection 六(64)

一 正常下载

服务使用断点下载时,响应的信息是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();    }}