东东坏小子 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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题