欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java调用微信客服消息实现发货通知的方法详解

程序员文章站 2024-02-23 21:57:22
本文实例讲述了java调用微信客服消息实现发货通知的方法。分享给大家供大家参考,具体如下: 微信文档地址:https://mp.weixin.qq.com/wiki...

本文实例讲述了java调用微信客服消息实现发货通知的方法。分享给大家供大家参考,具体如下:

微信文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140547&token=&lang=zh_cn

个人说明:这是一个样例,微信客户消息有很多种,我现在用的是公众号发送消息。样子如下图。

Java调用微信客服消息实现发货通知的方法详解

说明:下面开始代码部分了。

1.首先看微信文档。这里才是我们需要的

Java调用微信客服消息实现发货通知的方法详解

这里是说发消息要post请求这个接口:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=access_token

但是这个接口后面需要带一个参数access_token。

下面先获取access_token。

//这里的weixinutil.getaccess_token()方法,放在下面。
string atoken = weixinutil.getaccess_token("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+你的appid+"&secret="+你的appsecret+"");
system.out.println("这里是atoken"+atoken);
string[] tokenone = atoken.split(":");
string[] token = tokenone[1].split(",");
char [] stringarr = token[0].tochararray();
string token3 = "" ;
for(int i=1;i<stringarr.length-1;i++){
  string token2 = string.valueof(stringarr[i]);
  token3 += token2;
}
system.out.println("这里是access_token"+token3);

获取到一个access_token,然后就可以加入到微信请求中

//这里就是一个微信请求,首先用string放着
string tokenurl = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+token3;
//首先确定是发送文字消息,还是图文消息,这里是手写的json数据.
//发送文字消息,无连接
string json = "{\"touser\":\"这里是openid\",\"msgtype\":\"text\",\"text\":{\"content\":\"hello world\"}}";
//图文消息,有链接连接
string jsonpic = "{\"touser\":\""+这里是openid+"\","+ "\"msgtype\":\"news\",\"news\":{\"articles\":["+ "{\"title\":\"helloworld\",\"url\":\"要跳转的链接"}]}}";
system.out.println("这里是json"+jsonpic);
//请求方法,然后放回ok 成功,否则错误。这里这个请求方法在下边
string xmlstr = httpkit.post(tokenurl,jsonpic);
system.out.println("这里是xmlstr"+xmlstr);

说明:weixinutil.getaccess_token()方法。我放整个类了。改包名,只需要导入两个包

package com.uitrs.weixin;
import java.net.httpurlconnection;
import java.net.url;
public class weixinutil {
  //传入url
    public static string getaccess_token(string url) {
      string accesstoken = null;
      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();
        inputstream is = http.getinputstream();
        int size = is.available();
        byte[] jsonbytes = new byte[size];
        is.read(jsonbytes);
        accesstoken = new string(jsonbytes, "utf-8");
        system.out.println(accesstoken);
        is.close();
      } catch (exception e) {
        e.printstacktrace();
      }
      return accesstoken;
    }
}

说明:httpkit.post();方法,我放整个类了。这个类我用的是导入

import com.jfinal.kit.httpkit;

这个包到了jfinal的包。出自下面三个包当中,具体我也不清楚了

1.jfinal-2.2.jar (应该是这个)
2.jfinal-2.2-bin-with-src.jar
3.jfinal-weixin-1.7-bin-with-src.jar

更多关于java算法相关内容感兴趣的读者可查看本站专题:《java字符与字符串操作技巧总结》、《java数组操作技巧总结》、《java数学运算技巧总结》、《java编码操作技巧总结》和《java数据结构与算法教程

希望本文所述对大家java程序设计有所帮助。