java给微信发送get和post请求

标签: java 微信 get | 发表时间:2015-09-14 19:06 | 作者:zl544434558
出处:http://blog.csdn.net

现在做微信订阅号、微信公众号,微信企业号都需要开发者给微信服务器发送get或post请求。具体发送get或post请求源码如下:

  package com.ciji.utils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class HttpRequestUtils {
    /**
     * 向指定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 urlNameString = url + "?" + param;
            URL realUrl = new URL(urlNameString);
            // 打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            // 设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 建立实际的连接
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定义 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);
            e.printStackTrace();
        }
        // 使用finally块来关闭输入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        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("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 获取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) {
            System.out.println("发送 POST 请求出现异常!"+e);
            e.printStackTrace();
        }
        //使用finally块来关闭输出流、输入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }    
}

junit的测试代码:

  package com.ciji.test;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ciji.utils.HttpRequestUtils;

public class WEIXINgetUserInfo {

    //得到微信token的url
    private String GETTOKKEN_URL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken";

    //参数(企业号id)
    private String corpid = "替换成企业号Id ";

    //参数(管理组凭证密钥)
    private String corpsecret = "替换成管理组凭证密钥";

    @Test
    public void getUserInfos() {
        String param = "corpid=" + corpid + "&corpsecret=" + corpsecret;
        String tokenResultJSON = HttpRequestUtils.sendGet(GETTOKKEN_URL, param);

        /**使用阿里巴巴的jar解析,据网上的json解析比较,常用json解析性能和api好用的关系是:
         * fastjson > jackjson > Gjson > json-lib (没有亲自测过)
         */
        JSONObject token_json = JSON.parseObject(tokenResultJSON);
        String access_token = (String) token_json.get("access_token");
        System.out.println(access_token +"access_token");

    }
}

到此就可以通过java给微信发送get或post请求,然后获得access_token就可以进行后续操作了。

作者:zl544434558 发表于2015/9/14 11:06:40 原文链接
阅读:0 评论:0 查看评论

相关 [java 微信 get] 推荐:

java给微信发送get和post请求

- - CSDN博客推荐文章
现在做微信订阅号、微信公众号,微信企业号都需要开发者给微信服务器发送get或post请求. 具体发送get或post请求源码如下:. * 向指定URL发送GET方法的请求. 请求参数,请求参数应该是 name1=value1&name2=value2 的形式. * @return URL 所代表远程资源的响应结果.

get tough行为指南

- Doug - 意志与表象的世界
在看到庄雅婷这个名字的时候,我真想给自己改个笔名叫做庄坚强,如果得知后来我和她能成为好友,说不定还就真改了. 庄老说,get tough是很吃亏的,分分钟面临着没人关心没人疼爱的危险,可tough的性格又像是一件内衣外穿的避弹衣,在别人刚开始打飞机的时候我就已经开始打老师,一直以来最多被人冠以的抬头就是“才女”或者“女流氓”.

apt 不仅仅是 apt-get

- fastzhong - OSMSG
ubuntu/debian 下使用 apt-get 或 synaptic(新立得) 安装软件是件很轻松的事情. 除了简单的安装软件, apt 工具集还有许多特别情况下的用法.. 任何时候请记住 man 手册是良师.. 1.使用 aptitude 代替 apt-get. aptitude 虽然没有 apt-get 的”超级牛力”, 但功能却比 apt-get 更强大.

从HTTP GET和POST的区别说起

- jin - Yining.write()
在推特上抱怨面试时问HTTP GETE和POST的区别得到回答都不满意,有人不清楚,当时只回复了看 RFC2616. 面试时得到的回答大多是:POST是安全的,因为被提交的数据看不到,或者被加密的,其它的还有GET的时候中文出现乱码(在地址栏里),数据最大长度限制等等. 说 POST 比 GET 安全肯定是错的,POST跟GET都是明文传输,用httpfox等插件,或者像WireShark 等类似工具就能观察到.

Get Taxi:一键打车,全程服务

- Allen - 雷锋网
都说出租车是一个城市的名片,但现在国内一线城市的出租车服务却很难让人满意,尤其是打车难的问题,平时打车等上一刻钟或是半小时不算什么,刮风下雨天就更不用说了. 针对这个情况,国外推出了一款手机打车应用——Get Taxi,可以使用手机一键打车,可谓高效便捷、易于管理,同时还有轻松支付和积分兑换的功能,该应用程序可以在各种手机平台使用,包括iOS、Android、Symbian和Blackberry,而且是全免费的.

索尼爱立信十周年:Get Smart!

- 橙子 - 爱范儿 · Beats of Bits
十年前,日本电器巨头索尼(Sony)和瑞典电信霸主爱立信(Ericsson)合资成立手机公司“索尼爱立信”. 在这十年间,它一度走在破产和分家的边缘,也一度开发出 T610(T618)等畅销机型,同时它也被当成合资公司的典范写进 MBA 教科书. 在十年后的今天,公司总裁兼 CEO  Bert Nordberg 接受了《华尔街日报》的采访,他是从爱立信美国分公司空降至索尼爱立信的,拥有长期的“硅谷经验和人脉”.

也谈 GET 和 POST 的区别

- - 博客园_首页
上个月,博客园精华区有篇文章《 GET 和 POST 有什么区别. 及为什么网上的多数答案都是错的 》,文中和回复多是对以下两个问题进行了深究:. 在我看来这两者都不是重点,特写此文予以讨论. GET、POST 专业名称是 HTTP Request Methods. 但 HTTP Request Methods 不只是 GET 和 POST,完整列表如下:.

GET和POST有什么区别?

- - 博客园_知识库
  如果有人问你, GET 和POST ,有什么区别. 我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用.   这个答案好像并不是他想要的. 我说这就是个名字而已,如果服务器支持,他完全可以把GET改个名字叫GET2. 他反问道,那就是单纯的名字上的区别喽. 我想了想,我觉得如果说再具体的区别,只能去看RFC文档了,还 要取决于服务器(指 Apache ,IIS )的具体实现.

hibernate中get和load,find的区别

- - 企业架构 - ITeye博客
get和load方式是根据id取得一个记录. 下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来. 1.从返回结果上对比:. load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常. get方法检索不到的话会返回null.

Hibernate中Session的get和load - 罗韬

- - 博客园_首页
hibernate中Session接口提供的get()和load()方法都是用来获取一个实体对象,在使用方式和查询性能上有一些区别. 测试版本:hibernate 4.2.0. Session接口提供了4个重载的get方法,分别通过“持久类+主键”和“全类名+主键”以及“锁选项”来获取实体对象. 向数据库发出一条sql查询语句,并返回结果.