首页 > 其他分享 >微信相关接口调用

微信相关接口调用

时间:2022-09-07 09:57:03浏览次数:70  
标签:调用 String URL 微信 接口 param new null conn

1.HttpUtil -- 接口调用工具类

public class HttpUtil {

    private static final int TIMEOUT_IN_MILLIONS = 30000;

    private static final String CONN = "connection";
    private static final String KA = "Keep-Alive";


    public static String sendGet(String url) {
        String result = "";
        BufferedReader in = null;
        try {


            String urlNameString = url;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty(CONN, KA);
            connection.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立实际的连接
            connection.setRequestMethod("GET");
            connection.connect();
            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送GET请求出现异常!" + e);
        }
        // 使用finally块来关闭输入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {

            }
        }
        return result;
    }

    /**
     * 向指定URL发送GET方法的请求
     *
     * @param url   发送请求的URL
     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return URL 所代表远程资源的响应结果
     */
    public static String sendGet(String url, String param) {
        String result = "";
        BufferedReader in = null;
        try {
            String encoding = new String(Base64.encode(new String("jshxwlw" + ":" + "JSHXwlw_0616").getBytes()));

            String urlNameString = url ;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            // 设置通用的请求属性

            connection.setRequestProperty("Authorization", "Basic " + encoding);
            connection.setRequestProperty(CONN, KA);

            // 建立实际的连接
            connection.setRequestMethod("GET");
            connection.connect();

            // 获取所有响应头字段

            // 定义 BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送GET请求出现异常!" + e);
        }
        // 使用finally块来关闭输入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {

            }
        }
        return result;
    }

    /**
     * 向指定 URL 发送POST方法的请求
     *
     * @param url   发送请求的 URL
     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return 所代表远程资源的响应结果
     */
    public static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty(CONN, KA);
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            //1.获取URLConnection对象对应的输出流
            out = new PrintWriter(conn.getOutputStream());
            //2.中文有乱码的需要将PrintWriter改为如下

            // 发送请求参数
            out.print(param);
            // flush输出流的缓冲
            out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" + e);

        }
        //使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {

            }
        }
        System.out.println("post推送结果:" + result);
        return result;
    }


    /**
     * 向指定 URL 发送POST方法的请求
     *
     * @param url   发送请求的 URL
     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return 所代表远程资源的响应结果
     * @throws Exception
     */
    public static String doPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty(CONN, KA);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type",
                    "application/json");
            conn.setRequestProperty("charset", "utf-8");
            conn.setUseCaches(false);
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
            conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
            if (param != null && !param.trim().equals("")) {
                // 获取URLConnection对象对应的输出流
                out = new PrintWriter(conn.getOutputStream());
                // 发送请求参数
                out.print(param);
                // flush输出流的缓冲
                out.flush();
            }
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {

        }
        // 使用finally块来关闭输出流、输入流
        finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {

            }
        }
        return result;
    }
HttpUtil

2.获取token

public String getAccessToken() {
String access_token;
String accessUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + APPID + "&secret=" + SECRET;
JSONObject accessJson = (JSONObject) JSONObject.parse(HttpUtil.sendGet(accessUrl));
access_token = accessJson.getString("access_token");
return access_token;
}

3.获取openid

private String getOpenid(@RequestParam("code") String code) {
StringBuffer sb = new StringBuffer();
sb.append(wechatUrl).append(APPID).append("&secret=").append(SECRET).append("&js_code=")
.append(code).append("&grant_type=authorization_code");
String url = sb.toString();
JSONObject jsonObject = (JSONObject) JSONObject.parse(HttpUtil.sendGet(url));
log.info("请求路径:{},appid:{},secret:{},返回信息:{}", url, APPID, SECRET, jsonObject);
String openid = jsonObject.getString("openid") ;
return openid;
}

4.获取手机号

public String getPhone(@RequestBody JSONObject jsonObject) {
String access_token = this.getAccessToken();
String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + access_token;
Map<String, String> map = new HashMap<>();
map.put("code", jsonObject.getString("code"));
String param = JSONObject.toJSONString(map);
JSONObject data = (JSONObject) JSONObject.parse(HttpUtil.sendPost(url, param));
String phoneNumber = data.getJSONObject("phone_info").getString("phoneNumber");
return data;
}

标签:调用,String,URL,微信,接口,param,new,null,conn
From: https://www.cnblogs.com/shanghuliu/p/16664216.html

相关文章

  • Spring 中毒太深!离开 Spring 我居然连最基本的接口都不会写了。。。
    来源:cnblogs.com/lonely-wolf/p/14127957.html随着Spring的崛起以及其功能的完善,现在可能绝大部分项目的开发都是使用Spring(全家桶)来进行开发,Spring也确实和其名字一......
  • 前台页面如何找某个数据的后端接口
    右键>开发者模式>打开网络>刷新页面>看响应>一个个看响应,看哪个响应与像找的数据一样或可以看‘预览’  ......
  • java---Collection接口中方法测试
    Collection接口中方法测试一,contains(Objectobj),containsAll(Collectioncoll1)@Testpublicvoidtest1(){Collectioncoll=newArrayList();......
  • 微信小程序picker动态数据,支持picker和文本同时使用
    效果图  如果按钮下没有内容会直接输出结果wxml<viewclass="tr"><viewstyle="width:30%;text-align:center;"wx:for="{{buildinglist}}"wx:for-index="i"......
  • GO语言自学_013_接口
    代码packagemainimport"fmt"/*go语言中,有专门的关键字表示接口:interfaceinterface不仅可以处理多态,还可以接收任意的数据类型。*/funcmain(){ //定义三个接......
  • 常见HTTP请求Web API接口
    一、HTTP请求带账号和密码的域名接口1.接口地址:http://yuming.com/test/model2.请求头:账号:admin;密码:1234563.接口入参格式:点击查看代码{"code":"0","msg":"......
  • Java调用C++动态链接库——Jni
    最近项目需要,将C++的算法工程编译成动态链接库,交给Java后台当作函数库调用。就去了解了下Jni。使用起来还是比较方便的。1.  首先编写Java的调用类。例如:  public......
  • 多线程---实现Callable接口
    实现Callable接口  案例:packagecom.mokuiran.thread;​importorg.apache.commons.io.FileUtils;​importjava.io.File;importjava.io.IOException;importjava.......
  • 微信小程序苹果手机底部小黑条优化
    苹果官方推荐使用env(),constant()来适配,而env()和constant()函数有个必要的使用前提,当网页设置viewport-fit=cover的时候才生效。padding-bottom:constant(safe-area-ins......
  • c# 调用Windows API
    c#调用WindowsAPI前言看点代码安抚浮躁的心对应表API数据类型WindowsAPI时的数据类型BOOLSystem.Int32BOOLEANSystem.Int32BYTESystem.UInt16......