吐槽:微信api很无语。有一部分xml。有一部分json。

最近看如何调用微信公众平台json有关api更方便。终于找到了httpcliect和gson对。

假设你有一个更好的办法,请告诉我。

了解如何先使用下面的代码gson和httpclient,有功夫再整到我的sophia里,呵呵。

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.util.HashMap;
import java.util.Map;import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpResponseException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;public class JsonTest {/*** 获取access token* @return* @throws ClientProtocolException* @throws IOException*/public static String getToken() throws ClientProtocolException, IOException {CloseableHttpClient httpclient = HttpClients.createDefault();//String appid = "eeeeeeee";String secret = "eeeeeeeeeeeeeeee";HttpGet httpget = new HttpGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret) ;ResponseHandler<JsonObject> rh = new ResponseHandler<JsonObject>() {@Overridepublic JsonObject handleResponse(final HttpResponse response) throws IOException {StatusLine statusLine = response.getStatusLine();HttpEntity entity = response.getEntity();if (statusLine.getStatusCode() >= 300) {throw new HttpResponseException(statusLine.getStatusCode(),statusLine.getReasonPhrase());}if (entity == null) {throw new ClientProtocolException("Response contains no content");}Gson gson = new GsonBuilder().create();//ContentType contentType = ContentType.getOrDefault(entity);//Charset charset = contentType.getCharset();Reader reader = new InputStreamReader(entity.getContent());return gson.fromJson(reader, JsonObject.class);}};JsonObject myjson = httpclient.execute(httpget, rh);System.out.println(myjson.get("access_token").getAsString());return myjson.get("access_token").getAsString();}/*** 下载文件* @throws ClientProtocolException* @throws IOException*/public static void  downloadMediaFile(String token) throws ClientProtocolException, IOException {String mediaId = "fdsddddddddddd";String url = "http://file.api.weixin.qq.com/cgi-bin/media/get?

access_token=ACCESS_TOKEN&media_id=MEDIA_ID"; url = url.replaceAll("ACCESS_TOKEN", token); url = url.replaceAll("MEDIA_ID", mediaId); CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpget = new HttpGet(url); CloseableHttpResponse response = httpclient.execute(httpget); try { HttpEntity entity = response.getEntity(); if (entity != null) { long len = entity.getContentLength(); if (len != -1) { byte[] content = EntityUtils.toByteArray(entity); System.out.println(response.getStatusLine()); OutputStream os = new FileOutputStream("/Users/sssss/abc.jpg"); // 開始读取 os.write(content); // 完成,关闭全部链接 os.close(); } else { // Stream content out } } } finally { response.close(); } } /** * post json格式数据包 ----- 客服消息 * @param map * @throws ClientProtocolException * @throws IOException */ public static void postJsonData(Map map) throws ClientProtocolException, IOException { String token = "lv3s0iunvVvEj9K3bz12xofvXfW1916ePLqZ7mN6mx7reY-IDzPTrwoErd4pSMD4eSps56QbmbaQ"; String url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN"; url = url.replaceAll("ACCESS_TOKEN", token); CloseableHttpClient httpclient = HttpClients.createDefault(); Gson gson = new Gson(); StringEntity entity = new StringEntity(gson.toJson(map), ContentType.create("plain/text", Consts.UTF_8)); entity.setChunked(true); HttpPost httppost = new HttpPost(url); httppost.setEntity(entity); CloseableHttpResponse response = httpclient.execute(httppost); System.out.println(response.getStatusLine()); } public static void main(String[] args) throws ClientProtocolException, IOException { String token = getToken(); downloadMediaFile(token); //客服消息 Map map = new HashMap(); map.put("touser", "o3Y0et021tT_MVK2bdY1DhSWwFCc"); map.put("msgtype", "text"); Map m = new HashMap(); m.put("content", "hello world"); map.put("text", m); postJsonData(map); } }

不好意思,昨天晚上发表文章,csdn老失败。

导致只有一个标题。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

使用gson和httpclient呼叫微信公众平台API相关推荐

  1. 神卓互联内网穿透微信公众平台 API 实现微信登录

    神卓互联是一家专注于内网穿透和互联网软件开发的公司,其提供的内网穿透服务和微信开发能够满足众多企业和个人的需求.本文将介绍神卓互联的内网传统微信开发服务. 在内网中使用微信开发具有一定的困难,因为微信 ...

  2. 【转】微信公众平台API

    <?php /*** 微信公众平台API* * @author maojianlw@139.com* @link http://www.eaglephp.com*/ class WeixinCh ...

  3. 微信公众平台服务器的官方示例代码,微信公众平台API接口(示例代码)

    简介 微信公众平台消息接口为开发者提供了一种新的消息处理方式.微信公众平台消息接口为开发者提供与用户进行消息交互的能力.对于成功接入消息接口的微信公众账号,当用户发消息给公众号,微信公众平台服务器会使 ...

  4. 微信公众平台API接口开发教程

    简介 微信公众平台消息接口为开发者提供了一种新的消息处理方式.微信公众平台消息接口为开发者提供与用户进行消息交互的能力.对于成功接入消息接口的微信公众账号,当用户发消息给公众号,微信公众平台服务器会使 ...

  5. 调用微信公众平台API免费给自己发消息

    素材: 注册 微信公众平台的订阅号 开通开发者中心功能,注册公众平台测试账号.获取到appID和appsecret 摘要: 使用Python 2.7 基于 微信'公众平台测试账号'的appID和app ...

  6. java微信公众平台开发接口_微信公众平台API的Java通讯实现

    微信公众平台 相信大家也不陌生,官方网站提供了一个简单的php程序Demo 因为微信平台采用HTTP方式承载微信的协议,而且不是双向通讯,也就是说只能由微信服务器主动请求我们的服务器.其实当你使用我开 ...

  7. 用 Rails 搭建微信公众平台 API

    微信 API 简介 先来看看 API 的工作流程和机制 微信公众平台的账户可以开启"开发模式"(在"高级功能"中),开启之后,用户发送微信到你的账户时,将有如下 ...

  8. 微信公众平台api下载php,微信公众平台消息接口PHP版

    使用前提条件:拥有一个公网上的HTTP服务器主机空间,具有创建目录.上传文件等权限.推荐新浪的SAE.http://sae.sina.com.cn/ 首先请注册微信公众平台的账号,注册地址:http: ...

  9. php微信公众平台API接口(thinkphp5)

    整合了微信公众号的接口.包括但不限于:获取access_token,自定义菜单,消息管理,用户管理等.持续更新...下一步增加微信支付和支付宝支付接口 更多详细信息和更新可访问项目github地址,请 ...

最新文章

  1. 【每日一算法】重排链表
  2. 半导体产业格局:行稳而致远,强者将恒强
  3. 点云的无序性_PU-Net:解决3D点云数据的上采样问题
  4. [转载]从12306谈起验证码的架构
  5. C++ Primer 5th笔记(chap 14 重载运算和类型转换)算术和关系运算符
  6. django中的认证登陆与用户的创建
  7. 如何获取元素在父级div里的位置_关于元素的浮动你了解多少
  8. select默认选中的option_macOS下妙用option按键
  9. Mysql 启动报错解析:Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/dat
  10. arm中断保护和恢复_浅谈ARM处理器的七种异常处理
  11. 动态添加控件[可重复同一控件]
  12. 10php1c,PHP程序员,进阶选择C还是C++亦或者别语言
  13. 手机modem开发(4)---高通QXDM抓modem log
  14. java的gc策略_Java的GC与内存分配策略
  15. 四阶行列式直接展开_【Just For Fun】n 階行列式計算 宏 生成器,四阶行列式的最优展开...
  16. linux下配置环境变量方式
  17. css美化浏览器默认滚动条样式
  18. 微信小程序获取验证码
  19. 六一儿童节海报合集,一起重拾童年吧~
  20. 3、基于竞速小车 实现 华为hi lens红绿灯识别操作

热门文章

  1. Tomcat的Maven插件使用方法(在idea里面运行Tomcat)
  2. ACL2021--ChineseBert论文分享
  3. 上海名校计算机专业第一本科生:我5天里打工3天,丝毫不影响GPA,可见「教学」有多荒谬...
  4. 记录国外大学精彩的研究内容
  5. c语言求学生平均分 总分结构体,c语言 已知学生三门课程基本信息如下。请使用结构体编程,计算学生三门课程平均成绩后,列表输出学生的姓名、数学、英语、计算机、平均分信息,并按平均分排序。(...
  6. 【Mac】nginx 安装与配置
  7. Java Web 文件上传下载
  8. java案例大象和鹦鹉_小象调皮装死,象妈妈急忙找来饲养员,被拆穿后小象反应太可爱...
  9. 重庆高中自考本科最快需要多久?
  10. Linux笔记 No.28---( rsync服务、SSH服务)