java 实现微信服务器下载图片到自己服务器

 更新时间:2017年05月23日 11:55:10   投稿:lqh  
这篇文章主要介绍了 java 实现微信服务器下载图片到自己服务器的相关资料,需要的朋友可以参考下

 java 实现微信服务器下载图片到自己服务器

          此功能的实现需要注意java 中IO流的操作及网路开发,

          实现代码:

/** 
 * @author why 
 * 
 */ 
public class PicDownload { 
 
  /** 
   * 
   * 根据文件id下载文件 
   * 
   * 
   * 
   * @param mediaId 
   * 
   *      媒体id 
   * 
   * @throws Exception 
   */ 
 
  public static InputStream getInputStream(String accessToken, String mediaId) { 
    InputStream is = null; 
    String url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=" 
        + accessToken + "&media_id=" + mediaId; 
    try { 
      URL urlGet = new URL(url); 
      HttpURLConnection http = (HttpURLConnection) urlGet 
          .openConnection(); 
      http.setRequestMethod("GET"); // 必须是get方式请求 
      http.setRequestProperty("Content-Type", 
          "application/x-www-form-urlencoded"); 
      http.setDoOutput(true); 
      http.setDoInput(true); 
      System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒 
      System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒 
      http.connect(); 
      // 获取文件转化为byte流 
      is = http.getInputStream(); 
 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return is; 
 
  } 
 
  /** 
   * 
   * 获取下载图片信息(jpg) 
   * 
   * 
   * 
   * @param mediaId 
   * 
   *      文件的id 
   * 
   * @throws Exception 
   */ 
 
  public static void saveImageToDisk(String accessToken, String mediaId, String picName, String picPath) 
      throws Exception { 
    InputStream inputStream = getInputStream(accessToken, mediaId); 
    byte[] data = new byte[10240]; 
    int len = 0; 
    FileOutputStream fileOutputStream = null; 
    try { 
      fileOutputStream = new FileOutputStream(picPath+picName+".jpg"); 
      while ((len = inputStream.read(data)) != -1) { 
        fileOutputStream.write(data, 0, len); 
      } 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } finally { 
      if (inputStream != null) { 
        try { 
          inputStream.close(); 
        } catch (IOException e) { 
          e.printStackTrace(); 
        } 
      } 
      if (fileOutputStream != null) { 
        try { 
          fileOutputStream.close(); 
        } catch (IOException e) { 
          e.printStackTrace(); 
        } 
      } 
    } 
  } 
 
  /** 
   * 图片下载 
   * 
   * @param accessToken 
   * @param mediaId 
   */ 
  public static void getPic(String accessToken, String mediaId) { 
    String requestUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"; 
    requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken).replace( 
        "MEDIA_ID", mediaId); 
    JSONObject jsonObject = WeixinUtil.httpRequest(requestUrl, "GET", null); 
    System.out.println(jsonObject); 
  } 
 
  public static void main(String[] args) throws Exception { 
    String accessToken = ""; 
    String mediaId = ""; 
    String picName = ""; 
    saveImageToDisk(accessToken, mediaId, picName,"f:/"); 
  } 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Java ​​​​​​​HashMap遍历方法汇总

    Java ​​​​​​​HashMap遍历方法汇总

    这篇文章主要介绍了Java ​​​​​​​HashMap遍历方法汇总,HashMap 的遍历方法有很多种,不同的 JDK 版本有不同的写法,下文关于其遍历方法总结需要的小伙伴可以参考一下
    2022-05-05
  • Java超详细讲解排序二叉树

    Java超详细讲解排序二叉树

    排序二叉树的特点是一个父节点只能有左右两个子节点、左节点的值比父节点要小、右节点的值要比父节点要大,难度并不大,但是得花时间来理解
    2022-06-06
  • Spring整合websocket整合应用示例(下)

    Spring整合websocket整合应用示例(下)

    这篇文章主要介绍了Spring整合websocket整合应用示例(下)的相关资料,需要的朋友可以参考下
    2016-04-04
  • SpringBoot没有主清单属性的解决方法

    SpringBoot没有主清单属性的解决方法

    在本篇文章里小编给大家整理的是关于解决SpringBoot没有主清单属性知识点,需要的朋友们学习下。
    2019-11-11
  • Java OSS批量下载并压缩为ZIP代码实例

    Java OSS批量下载并压缩为ZIP代码实例

    这篇文章主要介绍了Java OSS批量下载并压缩为ZIP代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • java反射总结实例详解

    java反射总结实例详解

    这篇文章主要结合实例形式分析了介绍了java基于反射得到对象属性值的方法,Class类,基本数据类型,类的反射等,需要的朋友可以参考下
    2017-04-04
  • Default Methods实例解析

    Default Methods实例解析

    这篇文章主要介绍了Default Methods实例解析,介绍了默认方法的相关问题,以及与普通方法的区别,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • Java服务器主机信息监控工具类的示例代码

    Java服务器主机信息监控工具类的示例代码

    这篇文章主要介绍了Java服务器主机信息监控工具类的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 浅谈对于DAO设计模式的理解

    浅谈对于DAO设计模式的理解

    这篇文章主要介绍了浅谈对于DAO设计模式的理解,小编觉得挺不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • Java 封装的使用详解

    Java 封装的使用详解

    在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制
    2021-11-11

最新评论