本文实例讲述了java调用微信客服消息实现发货通知的方法。分享给大家供大家参考,具体如下:
微信文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140547&token=&lang=zh_cn
个人说明:这是一个样例,微信客户消息有很多种,我现在用的是公众号发送消息。样子如下图。
说明:下面开始代码部分了。
1.首先看微信文档。这里才是我们需要的
这里是说发消息要post请求这个接口:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=access_token
但是这个接口后面需要带一个参数access_token。
下面先获取access_token。
1
2
3
4
5
6
7
8
9
10
11
12
|
//这里的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,然后就可以加入到微信请求中
1
2
3
4
5
6
7
8
9
10
11
|
//这里就是一个微信请求,首先用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()
方法。我放整个类了。改包名,只需要导入两个包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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();
方法,我放整个类了。这个类我用的是导入
1
|
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程序设计有所帮助。
原文链接:http://blog.csdn.net/qq_29057491/article/details/53419262