正常下载与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();
    }
}
时间: 2024-10-15 13:27:43

正常下载与URLConnection 六(64)的相关文章

Win10预览版系统下载:中文简体64位ISO下载

安装 Windows Technical Preview 前,请务必查看系统要求和其他重要信息. 如果你已经准备就绪,请按照下面的步骤下载一个名为 ISO 的特别文件,你可以使用该文件安装该预览版: 单击此页面上的"下载"链接之一. 下载完成后,将该 ISO 文件传输至 DVD 或 USB 闪存驱动器等安装介质. 双击安装介质上的 setup.exe 并按照步骤进行操作."开始"菜单重要提示将 ISO 文件转换为 DVD 的最简单方法是,使用 Windows 磁盘映

LabVIEW 2012 for Windows下载大全-32位64位包括学生版中英文

NI LabVIEW 2012(英文32位和64位) http://download.ni.com/support/softlib/labview/labview_development_system/2012/2012LV-WinEng.exehttp://download.ni.com/support/softlib/labview/labview_development_system/2012/2012LV-64bit.exe - NI LabVIEW 2012 Student(学生版中文

Adobe Photoshop CC 14.0简体中文特别版32位和64位下载

原文地址:http://brushes8.com/47555.html 什么是Adobe Photoshop CC 14.0 继去年Adobe推出Photoshop CS6版本后,Adobe又在MAX大会上推出了最新版本的Photoshop CC (Creative Cloud).在主题演讲中,Adobe宣布了Photoshop CC (Creative Cloud)的几项新功能,包括:相机防抖动功能.Camera RAW功能改进.图像提升采样.属性面板改进.Behance集成.同步设置以及其他

Photoshop Cs5 64位系统破解版下载(内含破解方法)

Photoshop Cs5 64位系统是电影.视频和多媒体领域的专业人士, 使用 3D 和动画的图形和 Web 设计人员, 以及工程和科学领域的专业人士的理想选择,下面提供Photoshop Cs5 64位系统破解版下载! Photoshop Cs5 64位系统破解方法:将下载文件夹中的crackx64.zip解压后,在Crackx64文件夹中找到amtlib.dll.然后,进入安装目录,PhotoShop CS5.1 一般是X:Program FilesAdobeAdobe Photoshop

JDK的下载,安装与环境的配置

JDK的全称是JavaSE Development Kit,即java开发工具包,是sun公司提供的一套用于开发java应用程序的开发包,它提供了编译.运行java程序所需的各种工具和资源,包括java编译器.java运行时环境,以及常用的java类库等. 这是又设计到一个概念:JRE,全称Java Runtime Environment ,java运行时环境.它是运行java程序的必须条件. 一般而言,如果只是运行java程序,可以只安装JRE,无需安装JDK. 1. JDK的下载 第一步:登

CorelDraw x6【Cdr x6】官方简体中文破解版(64位)安装图文教程、破解注册方法

原文:http://www.3d66.com/softsetup_120.html 第一步:解压文件 (图一) 首先解压我们下载的CorelDraw x6 64位文件包 如图一. 2第二步:运行安装程序 (图二) 双击“Setup”开始安装CorelDraw x6 64位 如图二. 3第三步:CorelDraw x6 64位许可协议界面 (图三) 这里我们要先把协议文字拖到最下面才能点击“我接受” 如图三. 4第四步:CorelDraw x6 64位序列号选择界面 (图四) 勾选“我没有序列号,

SAS9.3 64位版Win7安装指引

SAS9.3 64位版安装指引 换了新电脑,安装原来使用的SAS9.2之后,增强型编辑器一直不能被加载,尝试了各种方法,浪费了一天的时间.无奈下载了SAS9.3 64位版本,但是安装也不顺利,当然主要是JDK出现了问题,参考了网友的文章,顺利完成了安装,另注操作系统为win7 64位版. 原文地址:http://f.dataguru.cn/thread-161588-1-1.html 1,主要流程,来源于网络: 操作系统: win7中文旗舰版 64位 SAS: 9.3 64位 安装之前的准备工作

Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(具体教程)

原文地址:http://blog.csdn.net/sttyytw/article/details/17005263 声明:本教程在參考了下面博文,并经过自己的摸索后实际操作得出,本教程系本人原创,因为升级后的cocos2d-x有了一些变化,眼下的博文还没有关于Cocos2d-x 2.2.1最新版搭建Android交叉编译环境组建的说明,所以我这几天研究了一下,如今将详细的搭建方法分享出来,也给自己学习Cocos2d-x做个笔记. 參考博文: http://www.cnblogs.com/lhm

Sublime Text 3 3126 注册码 + 下载地址

Sublime Text 3 3126  下载地址 Windows版本 64位:https://download.sublimetext.com/Sublime%20Text%20Build%203126%20x64.zip 32位:https://download.sublimetext.com/Sublime%20Text%20Build%203126.zip OSX版本 https://download.sublimetext.com/Sublime%20Text%20Build%2031