• 上传永久图文素材-公共方法


    package com.epalmpay.util;


    import com.alibaba.fastjson.JSON;
    import com.riversoft.weixin.common.oauth2.AccessToken;
    import net.sf.json.JSONObject;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;

    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.security.KeyManagementException;
    import java.security.NoSuchAlgorithmException;
    import java.security.NoSuchProviderException;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    public class wxPhotoUpload {

    /**
    * 上传其他永久素材(图片素材的上限为5000,其他类型为1000)
    *
    * @return
    * @throws Exception
    */
    public static JSONObject addMaterialEver(String fileurl, String type, String token) {
    try {
    File file = new File(fileurl);
    //上传素材
    String path = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=" + token + "&type=" + type;
    String result = connectHttpsByPost(path, null, file);
    result = result.replaceAll("[\\]", "");
    System.out.println("result:" + result);
    JSONObject resultJSON = JSONObject.fromObject(result);
    if (resultJSON != null) {
    if (resultJSON.get("media_id") != null) {
    System.out.println("上传" + type + "永久素材成功");
    return resultJSON;
    } else {
    System.out.println("上传" + type + "永久素材失败");
    }
    }
    return null;
    } catch (IOException e) {
    e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    } catch (NoSuchProviderException e) {
    e.printStackTrace();
    } catch (KeyManagementException e) {
    e.printStackTrace();
    }
    return null;
    }
    /**
    * 上传图文素材到微信服务器后台
    * @return
    * @throws Exception
    */
    public static JSONObject addContentPicture(String fileurl, String type, String token) {
    try {
    File file = new File(fileurl);
    //上传素材
    String path = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=" + token;
    String result = connectHttpsByPost(path, null, file);
    result = result.replaceAll("[\\]", "");
    System.out.println("result:" + result);
    JSONObject resultJSON = JSONObject.fromObject(result);
    if (resultJSON != null) {
    if (resultJSON.get("url") != null) {
    System.out.println("上传" + type + "永久素材成功");
    return resultJSON;
    } else {
    System.out.println("上传" + type + "永久素材失败");
    }
    }
    return null;
    } catch (IOException e) {
    e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    } catch (NoSuchProviderException e) {
    e.printStackTrace();
    } catch (KeyManagementException e) {
    e.printStackTrace();
    }
    return null;
    }

    /**
    * 上传图文素材到微信服务器后台
    * @return
    * @throws Exception
    */
    public static List getUserOpenIdList(String access_token) {

    try {
    String url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token="+access_token;
    String result = HttpClientUtil.get(url);
    result = result.replaceAll("[\\]", "");
    System.out.println("result:" + result);
    JSONObject resultJSON = JSONObject.fromObject(result);
    if (resultJSON != null) {
    if (resultJSON.get("data") != null) {
    JSONObject data = (JSONObject) resultJSON.get("data");
    List openidlist = (List) data.get("openid");
    System.out.println("获取关注公众号用户的OpenId成功");
    return openidlist;
    } else {
    System.out.println("获取关注公众号用户的OpenId失败");
    }
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

    public static String connectHttpsByPost(String path, String KK, File file) throws IOException, NoSuchAlgorithmException, NoSuchProviderException, KeyManagementException {
    URL urlObj = new URL(path);
    //连接
    HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
    String result = null;
    con.setDoInput(true);

    con.setDoOutput(true);

    con.setUseCaches(false); // post方式不能使用缓存

    // 设置请求头信息
    con.setRequestProperty("Connection", "Keep-Alive");
    con.setRequestProperty("Charset", "UTF-8");
    // 设置边界
    String BOUNDARY = "----------" + System.currentTimeMillis();
    con.setRequestProperty("Content-Type",
    "multipart/form-data; boundary="
    + BOUNDARY);

    // 请求正文信息
    // 第一部分:
    StringBuilder sb = new StringBuilder();
    sb.append("--"); // 必须多两道线
    sb.append(BOUNDARY);
    sb.append(" ");
    sb.append("Content-Disposition: form-data;name="media";filelength="" + file.length() + "";filename=""

    + file.getName() + "" ");
    sb.append("Content-Type:application/octet-stream ");
    byte[] head = sb.toString().getBytes("utf-8");
    // 获得输出流
    OutputStream out = new DataOutputStream(con.getOutputStream());
    // 输出表头
    out.write(head);

    // 文件正文部分
    // 把文件已流文件的方式 推入到url中
    DataInputStream in = new DataInputStream(new FileInputStream(file));
    int bytes = 0;
    byte[] bufferOut = new byte[1024];
    while ((bytes = in.read(bufferOut)) != -1) {
    out.write(bufferOut, 0, bytes);
    }
    in.close();
    // 结尾部分
    byte[] foot = (" --" + BOUNDARY + "-- ").getBytes("utf-8");// 定义最后数据分隔线
    out.write(foot);
    out.flush();
    out.close();
    StringBuffer buffer = new StringBuffer();
    BufferedReader reader = null;
    try {
    // 定义BufferedReader输入流来读取URL的响应
    reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String line = null;
    while ((line = reader.readLine()) != null) {
    buffer.append(line);
    }
    if (result == null) {
    result = buffer.toString();
    }
    } catch (IOException e) {
    System.out.println("发送POST请求出现异常!" + e);
    e.printStackTrace();
    } finally {
    if (reader != null) {
    reader.close();
    }
    }
    return result;
    }

    public static AccessToken getAccessToken(String appid, String secret) throws IOException {
    AccessToken token = new AccessToken();
    String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET".replace("APPID", appid).replace("APPSECRET", secret);
    JSONObject jsonObject = doGetStr(url);
    if (jsonObject != null) {
    token.setAccessToken(jsonObject.getString("access_token"));
    token.setExpiresIn(jsonObject.getInt("expires_in"));
    }
    return token;
    }

    /*
    *get请求
    */
    public static JSONObject doGetStr(String url) throws IOException {
    JSONObject jsonObject = null;
    DefaultHttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet(url);
    HttpResponse httpResponse = client.execute(httpGet);
    HttpEntity httpEntity = httpResponse.getEntity();
    if (httpEntity != null) {
    String result = EntityUtils.toString(httpEntity, "UTF-8");
    jsonObject = JSONObject.fromObject(result);
    }
    return jsonObject;
    }

    /**
    * 删除永久素材
    * @return
    * @throws Throwable
    */
    public static String delmaterial(String appid,String secret,String mediaid) throws Throwable {
    Map<String,String> map=new HashMap<String,String>();
    map.put("media_id", mediaid);
    String token = getAccessToken(appid,secret).getAccessToken();
    String URL = "https://api.weixin.qq.com/cgi-bin/material/del_material?access_token="+token;
    String postArg = JSON.toJSONString(map);
    return HttpClientUtil.post(URL, postArg);
    }

    public static void main(String args[]) throws Exception {
    Map<String,String> map=new HashMap<String,String>();
    map.put("media_id", "NyLawrJYev9kPkz31vESb1txzH2CWLOfHR56-jSzC_g");
    String appid = "wx7b90637c812b012a";
    String appmima = "ecc38b46c4ea1e341ce2775bb3022a09";
    String token = getAccessToken(appid,appmima).getAccessToken();
    String URL = "https://api.weixin.qq.com/cgi-bin/material/del_material?access_token="+token;
    // URL = JSON.toJSONString(URL);
    String postArg = JSON.toJSONString(map);
    System.out.println(HttpClientUtil.post(URL,postArg));
    }




    }
  • 相关阅读:
    WPF中DataGrid控件的数据绑定与显示数组
    WPF中添加个简单的显示当前系统时间的示例
    WPF中往ComboBox里添加选项并指定默认选项
    WPF中Button的四种状态
    Web安全新变化 智能手机是下一个进攻点 狼人:
    卡巴斯基重拳组合 高效应对高考网站挂马 狼人:
    DNS规模故障追踪:由24岁站长引发的蝴蝶效应 狼人:
    追踪多省网络故障:域名解析瘫痪后的连锁反应 狼人:
    化解SaaS安全问题的三大措施 狼人:
    报道称黑客利用微软IIS安全漏洞 入侵大学服务器 狼人:
  • 原文地址:https://www.cnblogs.com/jabez1992/p/9722372.html
Copyright © 2020-2023  润新知