微信公众平台标签开发之编辑标签(3)

2017年09月05日 09:23 | 1418次浏览 作者原创 版权保护

我们在前两节介绍了利用微信公众平台标签接口创建了标签和获取标签,本节主要介绍编辑微信公众平台标签,我们在开发微信公众号个性化菜单等功能的时候,难免会有业务修改等,所以对用户需求展示不同的菜单会有所修改,那么最好的方式就是编辑标签,满足不同用户的需求。微信官方文档也给了关于编辑标签的接口,接口如下:

接口调用请求说明

http请求方式:POST(请使用https协议)
https://api.weixin.qq.com/cgi-bin/tags/update?access_token=ACCESS_TOKEN
POST数据格式:JSON
POST数据例子:
{
  "tag" : {
    "id" : 134,
    "name" : "广东人"
  }
}

错误码说明


好了,接口调用说明介绍完了,现在我们根据上述接口说明编写java代码实现。

1,新建一个带有main方法的类,然后获取access_token方法代码如下:

 /***
     * 获取token  V型知识库 www.vxzsk.com
     * @param appid 应用id
     * @param appSecret 应用秘钥
     * @return
     */
    public static String getToken(String appid,String appSecret){
    	 String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+"";
         String backData=TestMenu.sendGet(url, "utf-8", 10000);
         JSONObject jsonObject = JSONObject.fromObject(backData);
 		String access_token=jsonObject.getString("access_token");//调用接口凭证
 		return access_token;
    }

appid,appSecret分别为应用id和应用秘钥,读者可登陆微信公众平台管理中心查阅。

sendGet方法

/***
    * 模拟get请求
    * @param url
    * @param charset
    * @param timeout
    * @return
    */
    public static String sendGet(String url, String charset, int timeout)
     {
       String result = "";
       try
       {
         URL u = new URL(url);
         try
         {
           URLConnection conn = u.openConnection();
           conn.connect();
           conn.setConnectTimeout(timeout);
           BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));
           String line="";
           while ((line = in.readLine()) != null)
           {
            
             result = result + line;
           }
           in.close();
         } catch (IOException e) {
           return result;
         }
       }
       catch (MalformedURLException e)
       {
         return result;
       }
      
       return result;
     }

2,编辑标签方法代码:

/****
     * 编辑标签
     * @param access_token
     * @param params
     * @return
     */
    public static String updateTags(String access_token,String params){
    	String update_url="https://api.weixin.qq.com/cgi-bin/tags/update?access_token=";//编辑标签接口
    	String jsonData = TestMenu.sendPost(update_url+access_token, params);
		System.out.println("请求接口返回"+jsonData);
		return jsonData;
    }

第一个参数access_token就是我们第一步获取得到的,此参数是调用微信接口凭证,有效期为7200秒,过期要重新获取。

第二个参数params为编辑已存在的标签参数格式。

sendPost方法

/***
	 * Post 请求*
	 */
	public static String sendPost(String requrl,String param){
		 URL url;
		  String sTotalString="";  
		try {
			url = new URL(requrl);
			 URLConnection connection = url.openConnection(); 
			 
			 connection.setRequestProperty("accept", "*/*");
			 connection.setRequestProperty("connection", "Keep-Alive");
			 connection.setRequestProperty("Content-Type", "text/xml");
			// connection.setRequestProperty("Content-Length", body.getBytes().length+"");
			 connection.setRequestProperty("User-Agent",
                   "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)");
			 
			 
		        connection.setDoOutput(true);  
		        OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "utf-8");  
		        out.write(param); // 向页面传递数据。post的关键所在!  
		        out.flush();  
		        out.close();  
		        // 一旦发送成功,用以下方法就可以得到服务器的回应:  
		        String sCurrentLine;  
		      
		        sCurrentLine = "";  
		        sTotalString = "";  
		        InputStream l_urlStream;  
		        l_urlStream = connection.getInputStream();  
		        // 传说中的三层包装阿!  
		        BufferedReader l_reader = new BufferedReader(new InputStreamReader(  
		                l_urlStream));  
		        while ((sCurrentLine = l_reader.readLine()) != null) {  
		            sTotalString += sCurrentLine + "\r\n";  
		  
		        }  
		        
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
	       
	        System.out.println(sTotalString);  
	        return sTotalString;
	 }


3,main方法代码实现

/**
	 * @param args V型知识库 www.vxzsk.com
	 */
	public static void main(String[] args) {
		String appId = AppConst.APP_ID;//应用id
		String appSecret = AppConst.APPSECRET;//应用秘钥
		//1,获取access_token
		String access_token = TestMenu.getToken(appId, appSecret);
		System.out.println("token值:"+access_token);
		//2,编辑标签
		String params="{"
          +"\"tag\" : {"
          +"\"id\" : 101,"
          +"\"name\" : \"陕西人\""
        		  +"}"
        		  +"}";
		String jsonData = TestMenu.updateTags(access_token, params);
		System.out.println("编辑标签返回:"+jsonData);
		}
		
		}

main方法中,我们把标签id号为101的陕西修改为了陕西人,关于创建"陕西" 这个标签,前两节已经介绍了,运行main方法后,我们去微信公众平台管理中心查看,陕西已经变成"人陕西"了。

4,完整的微信编辑标签java代码实现

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import net.sf.json.JSONObject;
/**
 * V型知识库 www.vxzsk.com
 * **/
public class TestMenu {
	
	
	/***
	 * Post 请求*
	 */
	public static String sendPost(String requrl,String param){
		 URL url;
		  String sTotalString="";  
		try {
			url = new URL(requrl);
			 URLConnection connection = url.openConnection(); 
			 
			 connection.setRequestProperty("accept", "*/*");
			 connection.setRequestProperty("connection", "Keep-Alive");
			 connection.setRequestProperty("Content-Type", "text/xml");
			// connection.setRequestProperty("Content-Length", body.getBytes().length+"");
			 connection.setRequestProperty("User-Agent",
                   "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)");
			 
			 
		        connection.setDoOutput(true);  
		        OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "utf-8");  
		        out.write(param); // 向页面传递数据。post的关键所在!  
		        out.flush();  
		        out.close();  
		        // 一旦发送成功,用以下方法就可以得到服务器的回应:  
		        String sCurrentLine;  
		      
		        sCurrentLine = "";  
		        sTotalString = "";  
		        InputStream l_urlStream;  
		        l_urlStream = connection.getInputStream();  
		        // 传说中的三层包装阿!  
		        BufferedReader l_reader = new BufferedReader(new InputStreamReader(  
		                l_urlStream));  
		        while ((sCurrentLine = l_reader.readLine()) != null) {  
		            sTotalString += sCurrentLine + "\r\n";  
		  
		        }  
		        
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
	       
	        System.out.println(sTotalString);  
	        return sTotalString;
	 }
	
	/***
    * 模拟get请求
    * @param url
    * @param charset
    * @param timeout
    * @return
    */
    public static String sendGet(String url, String charset, int timeout)
     {
       String result = "";
       try
       {
         URL u = new URL(url);
         try
         {
           URLConnection conn = u.openConnection();
           conn.connect();
           conn.setConnectTimeout(timeout);
           BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));
           String line="";
           while ((line = in.readLine()) != null)
           {
            
             result = result + line;
           }
           in.close();
         } catch (IOException e) {
           return result;
         }
       }
       catch (MalformedURLException e)
       {
         return result;
       }
      
       return result;
     }
	
    /***
     * 获取token
     * @param appid 应用id
     * @param appSecret 应用秘钥
     * @return
     */
    public static String getToken(String appid,String appSecret){
    	 String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+"";
         String backData=TestMenu.sendGet(url, "utf-8", 10000);
         JSONObject jsonObject = JSONObject.fromObject(backData);
 		String access_token=jsonObject.getString("access_token");//调用接口凭证
 		return access_token;
    }
    /***
     * 创建标签
     * @param access_token
     * @return
     */
    public static String createTags(String access_token){
    	//2,创建用户标签
        String create_tags_url="https://api.weixin.qq.com/cgi-bin/tags/create?access_token=";//创建标签接口
		String params = "{ \"tag\" : { \"name\" : \"陕西\"}}";
		String jsonData = TestMenu.sendPost(create_tags_url+access_token, params);
		System.out.println("请求接口返回"+jsonData);
		return jsonData;
    }
    
    /****
     * 编辑标签
     * @param access_token
     * @param params
     * @return
     */
    public static String updateTags(String access_token,String params){
    	String update_url="https://api.weixin.qq.com/cgi-bin/tags/update?access_token=";//编辑标签接口
    	String jsonData = TestMenu.sendPost(update_url+access_token, params);
		System.out.println("请求接口返回"+jsonData);
		return jsonData;
    }
	
    /****
     * 获取标签
     * @param access_token
     * @return
     */
    public static String getTags(String access_token){
    	String url ="https://api.weixin.qq.com/cgi-bin/tags/get?access_token=";//获取标签接口
    	String jsonData = TestMenu.sendGet(url+access_token,"utf-8",10000);
		System.out.println("请求接口返回"+jsonData);
		return jsonData;
    }
    
    /****
     * 创建个性化菜单
     * @param access_token
     * @param params
     * @return
     * "menuid":407280739
     */
    public static String addconditional(String access_token,String params){
    	String url ="https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=";
    	String jsonData = TestMenu.sendPost(url+access_token, params);
       return jsonData;
    }
   

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String appId = AppConst.APP_ID;//应用id
		String appSecret = AppConst.APPSECRET;//应用秘钥
		//1,获取access_token
		String access_token = TestMenu.getToken(appId, appSecret);
		System.out.println("token值:"+access_token);
		//2,编辑标签
		String params="{"
          +"\"tag\" : {"
          +"\"id\" : 101,"
          +"\"name\" : \"人陕西\""
        		  +"}"
        		  +"}";
		String jsonData = TestMenu.updateTags(access_token, params);
		System.out.println("编辑标签返回:"+jsonData);
		
	}

}

小说《我是全球混乱的源头》
此文章本站原创,地址 https://www.vxzsk.com/166.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程