主页> 常见问题> 【停更】JAVAEE开发接入微信公众号接口初解【停

【停更】JAVAEE开发接入微信公众号接口初解【停

阅读: 常见问题
这篇文章是个人对微信的理解,如果有错误的地方,希望大家能够指正出来


微信开发是针对前端提供的服务,然而并不能阻止我们一个JAVA程序员对它封装的决心!!!


正文开始:


在开发前,我们要知道,微信开发可以做些什么。
   微信开发:
基于微信所提供的服务,我们可以依赖于一个特殊的账号(例如公众号),
将用户发送给微信端的消息发送至我们的服务器上,进行业务逻辑判断,做出相应的回应。
还可以通过用户在微信的授权,在不泄露用户资料的情况下,访问用户所授权的资源。
依赖微信服务器提供的服务资源进行功能拓展等。


   准备事项:
1.一个公众号,开发者可以申请一个测试用的测试公众号
2.微信接口调试工具
3.微信官方API文档


当我们申请下来公众号之后,进入测试公众号(以下简称公众号),这时会
拿到一个APPID和appsecret,相当于你的公众号的用户名和密码。


我们首先进行一些基本的操作

通过微信接口生成access_Token(公众号临时令牌) 

http请求方式: GET  
http://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

我们把APPID和APPSECRET这两个字符串替换成我们公众号的appid和 appsecret

微信会给我们返回一个json字符串

{"access_token":"ACCESS_TOKEN","expires_in":7200}
我们只需要access_token,后面的参数指明这个口令有效时间长度为两个小时

我们有了这个口令,就可以基本不用appid和APPsecret来操作微信了。

至于怎么access_token有什么用,我们下期进行详细说明。

不说了 上代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;

public class TokenTest {
	public static void main(String[] args) throws MalformedURLException, IOException {		
		String url = "http://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=这里换成你测试用的appid&secret=这里换成你测试用的appsecret";
		
		InputStream io = new URL(url).openStream();
		
		InputStreamReader inputStreamReader = new InputStreamReader(io, Charset.forName("UTF-8"));
		
		BufferedReader br = new BufferedReader(inputStreamReader);
		
		String token = readAll(br);
		
		System.out.println(token);
		
		
	}
	
	
	
	public static String readAll(BufferedReader br) throws IOException{
		int len = 0;
		char[] ch = new char[1024];
		StringBuilder sb = new StringBuilder();
		while((len = br.read(ch)) != -1){
			sb.append(ch,0,len);
		}
		return sb.toString();
	}
	
}


 控制台输出


{"access_token":"5_y7aRyAn1To2hW1fvquTmLNldl3I-YqILa_kZDVJOQCGtwClB9z3UHXfmRN9NBYJMu17G9wq9pLDCQcqmbirbhL95JvHxepIbO6-3NH7RhtGerDFW5iorio4ZNTayYE4qXBAM5cybEYM8hlkqITXcAFAUFJ","expires_in":7200}

若appid和secret错误,则会报


{"errcode":40013,"errmsg":"invalid appid"}

根据errcode我们参考官方文档,便可以找到错误(后面会详细说明)


通过这次操作,我们发现,作为开发不过是通过地址栏访问改网址,获取json数据而继续我们的逻辑操作,很像从数据库读取数据。那么我们可以将这些操作封装成工具方法

	import java.io.BufferedReader;
	import java.io.IOException;
	import java.io.InputStream;
	import java.io.InputStreamReader;
	import java.io.Reader;
	import java.net.MalformedURLException;
	import java.net.URL;
	import java.net.URLConnection;
	import java.nio.charset.Charset;


	import org.json.JSONException;
	import org.json.JSONObject;




	public class UrlJsonParam	public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
	    InputStream is = new URL(url).openStream();
	    try {
	      BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
	      String jsonText = readAll(rd);
	      System.out.println(jsonText);
	      JSONObject json = new JSONObject(jsonText);
	      return json;
	    } finally {
	      is.close();
	    }
	  }	private static String readAll(Reader rd) throws IOException {
	    StringBuilder sb = new StringBuilder();
	    int cp;
	    while ((cp = rd.read()) != -1) {
	      sb.append((char) cp);
	    }
	    return sb.toString();
	  }
	}




我们将字符串直接转换成JSONObject对象,便可以对json进行快速读取了。


其实微信开发不过是访问网页,读取字符串,转换成我们需要的数据,进行业务逻辑拼装,









【温馨提示】倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至55506560@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于本站观点。用户与作者的任何交易与本站无关,请知悉。

客服
套餐咨询,操作答疑等
在线客服