zoukankan      html  css  js  c++  java
  • java 从网络Url中下载文件 && java调用url接口

    java 从网络Url中下载文件

    /**
    * 从网络Url中下载文件
    * @param urlStr
    * @param fileName
    * @param savePath
    * @throws IOException
    */
    public static void downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{
      URL url = new URL(urlStr);
      HttpURLConnection conn = (HttpURLConnection)url.openConnection();
      //设置超时间为3秒
      conn.setConnectTimeout(3*1000);
      //防止屏蔽程序抓取而返回403错误
      conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");

      //得到输入流
      InputStream inputStream = conn.getInputStream();
      //获取自己数组
      byte[] getData = readInputStream(inputStream);

      //文件保存位置
      File saveDir = new File(savePath);
      if(!saveDir.exists()){
        saveDir.mkdir();
      }
      File file = new File(saveDir+File.separator+fileName);
      FileOutputStream fos = new FileOutputStream(file);
      fos.write(getData);
      if(fos!=null){
        fos.close();
      }
      if(inputStream!=null){
        inputStream.close();
      }

      System.out.println("info:"+url+" download success");

    }

    /**
    * 从输入流中获取字节数组
    * @param inputStream
    * @return
    * @throws IOException
    */
    public static byte[] readInputStream(InputStream inputStream) throws IOException {
      byte[] buffer = new byte[1024];
      int len = 0;
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      while((len = inputStream.read(buffer)) != -1) {
        bos.write(buffer, 0, len);
      }
      bos.close();
      return bos.toByteArray();
    }

    public static void main(String[] args) {
      try{
        downLoadFromUrl("http://101.95.48.97:8005/res/upload/interface/apptutorials/manualstypeico/6f83ce8f-0da5-49b3-bac8-fd5fc67d2725.png",
        "百度.jpg","d:/resource/images/diaodiao/country/");
      }catch (Exception e) {
        // TODO: handle exception
      }
    }

    很多简单的接口就是直接一个URl的形式,

    怎么调用?

    HttpClient httpclient=null;
    PostMethod post=null;
    try{
    httpclient = new HttpClient();
    post = new PostMethod(SendUrl);

    //设置编码方式
    post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"gbk");

    //添加参数
    post.addParameter("LoginName",LoginName);
    post.addParameter("Password", Password);

    //执行
    httpclient.executeMethod(post);

    //接口返回信息
    String info = new String(post.getResponseBody(),CHARSET);
    System.out.println(info);

    }catch (Exception e) {
    e.printStackTrace();
    }finally {
    //关闭连接,释放资源
    post.releaseConnection();
    ((SimpleHttpConnectionManager)httpclient.getHttpConnectionManager()).shutdown();
    }

    到此为止,主要为自己做备忘,同时方便有需要的人。呵呵!

  • 相关阅读:
    Linux IO接口 监控 (iostat)
    linux 防火墙 命令
    _CommandPtr 添加参数 0xC0000005: Access violation writing location 0xcccccccc 错误
    Visual Studio自动关闭
    Linux vsftpd 安装 配置
    linux 挂载外部存储设备 (mount)
    myeclipse 9.0 激活 for win7 redhat mac 亲测
    英文操作系统 Myeclipse Console 乱码问题
    Linux 基本操作命令
    linux 查看系统相关 命令
  • 原文地址:https://www.cnblogs.com/xiexy/p/4018323.html
Copyright © 2011-2022 走看看