微信公众号开发总结

申请公众号,申请服务器,申请域名这些都是基础步骤,跳过不说了。

如果是第一次开发,即使按照微信的接入指南操作,也要花费很长时间,这里说一下注意事项:

1. 服务器的url地址必须是域名!ip不行。而且url接口只能有一个!否则,频繁的token验证失败会烦死你。

2. 微信开发文档给的例子是python的,我用的tomcat+java,token验证时是从网上找的java代码,确实可用,但接口必须严格按照微信的来,否则。。。多几个回车都不行,微信不会单独给你trim,自己想办法吧。

3. get和post接口调试工具是必须的,我下载了一个postman客户端,才找到问题。

4. url接口只能有一个带来的问题就是:token验证和消息接口只能用一个,只好用get和post方式来区分。这个微信开发文档里没写,后来在简书上才找到一篇文章,难道这个问题太低级?很多人不好意思说? tmd

5. 我要处理xml和json串,需要导入一堆的jar包:

<%@ page import="java.io.*,java.util.*,java.net.*,java.security.MessageDigest,java.security.NoSuchAlgorithmException"%><%@ page import="org.apache.commons.httpclient.*,org.apache.commons.httpclient.methods.PostMethod,org.apache.commons.httpclient.methods.RequestEntity,org.apache.commons.httpclient.methods.StringRequestEntity"%><%@ page import="com.alibaba.fastjson.*,org.dom4j.Document,org.dom4j.DocumentHelper,org.dom4j.DocumentException"%><%@ page import="org.dom4j.io.OutputFormat,org.dom4j.io.XMLWriter"%><%@ page import="org.dom4j.Element,org.dom4j.io.SAXReader,org.xml.sax.InputSource"%><%@ page import="javax.xml.parsers.DocumentBuilder,javax.xml.parsers.DocumentBuilderFactory,javax.xml.parsers.ParserConfigurationException"%><%@ page import="javax.xml.transform.Transformer,javax.xml.transform.TransformerConfigurationException"%><%@ page import="javax.xml.transform.TransformerException,javax.xml.transform.TransformerFactory,javax.xml.transform.dom.DOMSource,javax.xml.transform.stream.StreamResult"%>

眼晕吗? 凑合看吧,我可是一个一个贴上去的。

6. 记得写日志,便于调试。

公开一部分源码:

    String postToNlu(String in_url,String in_data){    
        //关闭   
        //创建httpclient工具对象   
        HttpClient client = new HttpClient();
        //创建post请求方法   
        PostMethod myPost = new PostMethod(in_url);
        //设置请求超时时间   
        client.setConnectionTimeout(5*1000);
        String responseString = "start postToNlu...";    
        try{
            //设置请求头部类型
            myPost.setRequestHeader("Accept","text/plain");
            //myPost.setRequestHeader("Content-Type","text/xml");
            //myPost.setRequestHeader("charset","utf-8");

            //设置请求体,即xml文本内容,注:这里写了两种方式,一种是直接获取xml内容字符串,一种是读取xml文件以流的形式
            //myPost.setRequestBody(in_data);
            //responseString = "set setRequestBody...";
              
            //InputStream body=this.getClass().getResourceAsStream("/data/"+xmlFileName);
            //myPost.setRequestBody(body);
            myPost.setRequestEntity(new StringRequestEntity(in_data,"application/json","utf-8"));
            responseString = "set setRequestEntity...";
            
            long len = myPost.getRequestEntity().getContentLength();
            responseString = "set getContentLength:" + len;
            myPost.setRequestHeader("Content-Length", len + "");
            
            int statusCode = client.executeMethod(myPost);
            if(statusCode == HttpStatus.SC_OK){
                responseString = "statusCode:" + statusCode;
                BufferedInputStream bis = new BufferedInputStream(myPost.getResponseBodyAsStream());
                byte[] bytes = new byte[1024];
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                int count = 0;    
                while((count = bis.read(bytes))!= -1){
                    bos.write(bytes, 0, count);
                }
                byte[] strByte = bos.toByteArray();
                responseString = new String(strByte,0,strByte.length,"utf-8");
                bos.close();    
                bis.close();
            }
            else
            {responseString = "nlu http error: " + statusCode;}
        }catch (Exception e) {    
            e.printStackTrace();
            responseString = responseString + "---"+ e.toString(); 
        }    
        myPost.releaseConnection();    
        return responseString;
    }

 

其它的就不公开了,代码很乱,我又不是很精通java,没用任何框架,也没封装, 我喜欢用手。。。。。。

调通以后,出现第一个回复还是很兴奋的,现在已经可以自动回复了,下一步是增加图文、语音回复,路漫漫。。。。。。

<think>好的,我现在需要帮助用户解决关于玩客云设备刷入Armbian系统后更换软件源的问题。首先,我需要确认用户的需求。用户已经成功刷入Armbian,现在想更换软件源,可能因为默认源速度慢或不可用,想换成国内镜像源,比如清华源、阿里云等。 接下来,我应该回想更换软件源的一般步骤。对于基于Debian的系统,通常是修改`/etc/apt/sources.list`文件,替换里面的仓库地址。Armbian作为Debian的衍生版,应该也是类似的方法。但可能需要确认具体的版本代号,比如buster、bullseye等,因为不同版本对应的源不同。 然后,用户可能需要具体的操作步骤。首先备份原文件,防止出错。然后使用sed命令或者nano编辑器替换源。同时,还要考虑是否需要更新软件列表,执行`apt update`。可能还需要更换其他源,比如Docker源或Python源,但用户的问题主要集中在软件源,也就是APT源。 另外,用户可能遇到的问题包括:权限不足,需要使用sudo;编辑器不熟悉,推荐使用nano;替换源后出现错误,如何排查;或者版本不匹配导致的问题。这些可能需要给出相应的解决建议。 需要确保提供的命令准确无误,比如正确的sed替换命令,正确的镜像源URL。例如,清华源的地址是否正确,是否支持Armbian的架构(armhf或arm64)。可能需要检查清华源或其他镜像源的官方文档,确认支持情况。 此外,用户可能需要验证是否更换成功,比如执行更新后没有错误,或者速度有明显提升。还可以建议用户测试安装软件包是否正常。 最后,生成相关问题,可能涉及如何安装特定软件、优化系统性能、配置中文环境等,这些是用户可能接下来会问的问题。 总结步骤: 1. 备份原sources.list 2. 替换为国内镜像源 3. 更新软件列表 4. 处理可能的问题,如版本代号错误、网络问题等 需要注意使用中文回答,行内公式用$...$,独立公式用$$...$$,但这个问题可能不太涉及数学公式,更多是命令行操作。但要确保LaTeX语法正确,如果有代码块的话用反引号包裹。 现在组织回答,确保结构清晰,分步骤说明,并提供验证方法和常见问题解决。同时,添加相关问题,帮助用户进一步了解。</think>### 玩客云Armbian更换软件源教程 #### 步骤说明 1. **连接设备** 通过SSH登录玩客云Armbian系统,例如: ```bash ssh root@设备IP地址 ``` 2. **备份原软件源** ```bash sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak ``` 3. **替换为国内镜像源** 使用以下命令替换默认源(以清华源为例,适用于Debian 11 "bullseye"版本): ```bash sudo sed -i 's@http://deb.debian.org@https://mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list ``` 4. **更新软件列表** ```bash sudo apt update ``` 5. **验证更新** 若输出显示从清华源拉取数据且无报错,则更换成功。 #### 常见问题解决 - **版本不匹配** 使用`lsb_release -a`查看系统版本,替换命令中的`bullseye`为实际版本代号[^1]。 - **网络连接失败** 检查`ping mirrors.tuna.tsinghua.edu.cn`是否通顺,或尝试其他镜像源(如阿里云、中科大)。 #### 其他镜像源配置 - **阿里云源** ```bash sudo sed -i 's@http://deb.debian.org@https://mirrors.aliyun.com@g' /etc/apt/sources.list ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值