东东坏小子 2017-01-03 06:35 采纳率: 0%
浏览 854

android Service 网络下载问题

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

if(intent!=null){

        String type=intent.getExtras().getString("type");
        String downloadPath=intent.getExtras().getString("downloadPath");
        String savePath=intent.getExtras().getString("savePath");

        if(type.equals("audio")){



        }else if(type.equals("video")){

            new MyThread(downloadPath, savePath).start();

        }
    }

    return super.onStartCommand(intent, flags, startId);

}


class MyThread extends Thread{

    HttpResponse httpResponse=null;
    InputStream is=null;
    FileOutputStream fos=null;
    long httpEntityLength=-1;
    RandomAccessFile raf=null;

    String downloadPath=null;
    String savePath=null;
    public MyThread(String downloadPath,String savePath) {

        this.downloadPath=downloadPath;
        this.savePath=savePath;

    }

    public void run(){

        try {

            HttpClient httpClient=new DefaultHttpClient();
            HttpPost httpPost=new HttpPost(HttpUrlUtil.WEBSERVER_PATH+downloadPath);
            httpResponse=httpClient.execute(httpPost);
            HttpEntity httpEntity=httpResponse.getEntity();
            BufferedHttpEntity bufferedHttpEntity = new BufferedHttpEntity(httpEntity);
            System.out.println(HttpUrlUtil.WEBSERVER_PATH+downloadPath);
            System.out.println("bufferedHttpEntity"+bufferedHttpEntity.getContentLength());

            is=bufferedHttpEntity.getContent();

            File file=new File(savePath);
            raf=new RandomAccessFile(file, "rwd");
            fos=new FileOutputStream(file);

            if(file.exists()){
                //handle发送此文件已经存在的消息
                if(raf.length()==httpEntityLength){


                    System.out.println("长度相同");

                }else{


                    System.out.println("长度不相同");

                }

            }
            byte buffer[] = new byte[1024];  
            int i = 0; 
            while ((i=is.read(buffer))!=-1) {
                fos.write(buffer, 0, i);

            }
            if(raf.length()==httpEntityLength){

                System.out.println("长度相同");

            }else{
                System.out.println("长度不相同");
            }


        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            try {
                is.close();
                raf.close();
                fos.close();

            } catch (Exception e2) {
                // TODO: handle exception
            }
        }

    }
}
下载地址是对的,但是得到的长度一直都是6277
  • 写回答

2条回答

  • oyljerry 2017-01-03 06:41
    关注

    查看你的http返回的response code是什么?还有就是打印一下返回的内容。看是什么?可能服务器做了过滤

    评论

报告相同问题?

悬赏问题

  • ¥15 luckysheet
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误