微信请求工具类

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;

import net.sf.json.JSONObject;

import com.baxcall.visitor.wechat.pojo.Token;

public class CommonUtil {
    //private static Logger log = LoggerFactory.getLogger(CommonUtil.class);

    //测试ID
    /*
    public final static String APP_ID = "测试appid";
    public final static String APP_SECRET = "测试secret";
    */

    //正式ID

    public final static String APP_ID = "正式appid";
    public final static String APP_SECRET = "正式secret";

    //获取凭证地址
    public final static String TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";

    public static Token token;

    //发送https请求
    /**
     * 
     * @param requestUrl    请求的地址
     * @param requestMethod 请求的方式
     * @param outputStr 提交的数据
     * @return
     */
    public static JSONObject httpRequest(String requestUrl,String requestMethod,String outputStr){
        JSONObject jsonObject = null;
        try{
            //创建SSL对象
            TrustManager[] tm = {new MyX509TrustManager()};
            SSLContext sslContext = SSLContext.getInstance("SSL","SunJSSE");
            sslContext.init(null, tm, new java.security.SecureRandom());
            SSLSocketFactory ssf = sslContext.getSocketFactory();

            URL url = new URL(requestUrl);
            HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();

            conn.setSSLSocketFactory(ssf);
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setRequestMethod(requestMethod);

            //当提交的数据不为null,向输入流写数据
            if(null!=outputStr){
                OutputStream outputStream = conn.getOutputStream();
                outputStream.write(outputStr.getBytes("UTF-8"));
                outputStream.close();
            }

            //获取输入流
            InputStream inputStream = conn.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

            //读取响应内容
            StringBuffer buffer = new StringBuffer();
            String str = null;
            while((str=bufferedReader.readLine())!=null){
                buffer.append(str);
            }

            bufferedReader.close();
            inputStreamReader.close();
            inputStream.close();
            conn.disconnect();
            jsonObject = JSONObject.fromObject(buffer.toString());

        }catch(ConnectException e){
            System.err.println("连接超时");
            //log.error("连接超时");
        }catch(Exception e1){
            e1.printStackTrace();
            System.err.println("请求异常");
            //log.error("请求异常");
        }



        return jsonObject;
    }

    /**
     * 获取Token
     * @param appid
     * @param appsecret
     * @return Token
     */
    public static Token getToken(String appid,String appsecret){
        Token token = null;
        String requestUrl = TOKEN_URL.replace("APPID", appid).replace("APPSECRET", appsecret);
        JSONObject jsonObject = httpRequest(requestUrl, "GET", null);
        if(null!=jsonObject){
            try{
                token = new Token();
                token.setAccessToken(jsonObject.getString("access_token"));
                token.setExpiresIn(jsonObject.getInt("expires_in"));

            }catch(Exception e){
                e.printStackTrace();
                System.err.println("获取口令失败");
                //log.error("获取口令失败");
            }
        }
        return token;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值