Maven
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.38</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
代码
package com.xrz.weixin.service;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
@Slf4j
@Service
public class WeiXinService {
private static final String WX_AUTH_LOGIN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token";
private static final String WX_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo";
@Value("${weixinConfig.appId}")
private String appId;
@Value("${weixinConfig.appSecret}")
private String appSecret;
public Object getToken(String code){
if(StringUtils.isEmpty(code)){
throw new RuntimeException("code不能为空");
}
StringBuffer loginUrl = new StringBuffer();
loginUrl.append(WX_AUTH_LOGIN_URL).append("?appid=").append(appId).append("&secret=")
.append(appSecret).append("&code=").append(code).append("&grant_type=authorization_code");
String res = this.httpRequest(loginUrl.toString(),"GET",null);
Map map = JSONObject.parseObject(res, Map.class);
String errcode = map.get("errcode").toString();
if (StringUtils.isNotEmpty(errcode)){
throw new RuntimeException("微信服务器返回异常!错误码:"+errcode);
}
String openId = map.get("openId").toString();
String accessToken = map.get("access_token").toString();
StringBuffer userUrl = new StringBuffer();
userUrl.append(WX_USERINFO_URL).append("?access_token=").append(accessToken).append("&openid=").append(openId);
String userRet = this.httpRequest(userUrl.toString(),"GET",null);
Map userMap = JSONObject.parseObject(userRet, Map.class);
System.out.println(JSONObject.toJSON(userMap));
return userMap;
}
public String httpRequest(String requestUrl,String requestMethod,String outputStr){
StringBuffer buffer=null;
try{
URL url=new URL(requestUrl);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod(requestMethod);
conn.connect();
if(null!=outputStr){
OutputStream os=conn.getOutputStream();
os.write(outputStr.getBytes("utf-8"));
os.close();
}
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
log.info("请求的URL:{},返回值:{}", url, buffer.toString());
}catch(Exception e){
e.printStackTrace();
}
return buffer.toString();
}
}