說明:
本次的教程主要是對微信公衆平台開發者模式的講解,網絡上很多類似文章,但很多都讓初學微信開發的人一頭霧水,是以總結自己的微信開發經驗,将微信開發的整個過程系統的列出,并對主要代碼進行講解分析,讓初學者盡快上手。
在閱讀本文之前,應對微信公衆平台的官方開發文檔有所了解,知道接收和發送的都是xml格式的資料。另外,在做内容回複時用到了圖靈機器人的api接口,這是一個自然語言解析的開放平台,可以幫我們解決整個微信開發過程中最困難的問題,此處不多講,下面會有其詳細的調用方式。
抄寫代碼出現的問題:
1.OutputStream os=response.getOutputStream()這樣寫是錯的,不能轉換,但是我看視訊裡這樣寫就沒錯啊,求解答
你在頭上導入OutputStream的包就可以了
import java.io.OutputStream;
ServletOutputStream是OutputStream 的子類
我今天也遇到了這個問題 ,解決了 ,因為你先寫的response.getOutputStream();是以他會先判斷後面的錯誤,你在寫前面的OutputStream的時候他會先報後面的問題 ,讓你轉換成ServletOutputStream os = response.getOutputStream();
添加jar包的兩種方法
1. 手動添加
- 在工程下建立一個Folder(目錄),叫lib,把dom4j的包複制、粘貼進來。
- 右擊工程,點選“Build Path” - “Configure Build Path” - “Libraries”,點選“Add JARs”,浏覽到工程\lib\dom4j*.jar,“OK”,再“OK”
- 然後在.java裡import org.dom4j.io.SAXReader;
2. 通過MAVEN添加jar包
帶寫
通過上述方法,浏覽不到建立lib檔案夾,Add Extenal jar,可以添加。
作者已經把源碼包上傳,可直接下載下傳,不用自己再找jar包。
Java中文注釋顯示亂碼
需要設定MyEclipse編碼格式(修改成UTF8):
1. windows->Preferences…打開”首選項”對話框, 左側導航樹,導航到general->Workspace,右側 Text file encoding,選擇Other,改變為UTF-8,以後建立立工程其屬性對話框中的Text file encoding即為UTF-8。
2. windows->Preferences…打開”首選項”對話框,左側導航樹,導航到general->Content Types,右側Context Types樹,點開Text,選擇Java Source File,在下面的Default encoding輸入框中輸入UTF-8,點Update,則設定Java檔案編碼為UTF-8。其他java應用開發相關的檔案 如:properties、XML等已經由MyEclipse預設指定,分别為ISO8859-1,UTF-8,如開發中确需改變編碼格式則可以在此指 定。
3. 經過上述兩步,建立java檔案即為UTF-8編碼,MyEclipse編譯、運作、調試都沒問題,但是做RCP應用的Product輸 出時、或者插件輸出時,則總是出錯,要麼不能編譯通過(輸出時要重新compile)、要麼輸出的插件運作時中文顯示亂碼。此時需要再RCP應用、或插件 Plugin工程的build.properties中增加一行,javacDefaultEncoding.. = UTF-8。讓輸出時編譯知道java源檔案時UTF-8編碼。這個設定需要保證所有的java源檔案時UTF-8編碼格式,如果不全是,可以參考 MyEclipse幫中(Plug-in Development Environment Guide > Reference > Feature and Plug-in Build configuration),建議全部java源檔案是UTF-8編碼。
搭建伺服器
1. 伺服器環境搭建
為友善起見,伺服器端搭建在新浪SAE,每天10雲豆租金(0.1元),省去了環境搭建的問題。
2. 原代碼管理代碼
SAE支援兩種代碼上傳方式,打包上傳和Git。見于Git是目前最強大,友善,流行的開發方式,并且可以用來寫書,決定采用Git方式管理代碼。
Git托管方有最正宗的GitHub,但是公司網絡把22端口關了,同時也上不去GitHub網絡。決定使用OSChina碼雲,功能是一樣的,速度更快。
由于Git分布式系統的原理,需要在本地有用戶端程式來管理本地倉庫,本項目采用msysgit(Windows用戶端。)
- 在碼雲建立倉庫,步驟不描述。
- 使用Git-scm在項目所在檔案夾,初始化,使項目建立本地倉庫。
-
建立SSH
SSH key 可以讓你在你的電腦和 Git @ OSC 之間建立安全的加密連接配接。
-
生成key
$ ssh-keygen -t rsa -C “[email protected]”# Creates a new ssh key using the provided email
-
驗證連接配接成功
$ ssh -T [email protected]
輸入yes
若傳回Welcome to [email protected], yourname! 則證明添加成功。
-
實在太沮喪了,git上傳代碼到碼雲沒問題,上傳sae總是報錯:
remote: Exporting git code…
remote: Uploading…
—–> Unable to select a buildpack
remote: {“Code”:1,”Error”:”build image failed: exit status 1.”}
remote: 錯誤:建構鏡像失敗
remote: error: hook declined to update refs/heads/1
To https://git.sinacloud.com/wechatserver1
! [remote rejected] master -> 1 (hook declined)
error: failed to push some refs to ‘https://git.sinacloud.com/
參考同樣文章,問題也沒有解決
http://saebbs.com/forum.php?mod=viewthread&tid=38734
通過再一次建立SAE應用才發現,通過git送出代碼,根目錄下需要有pom.xml檔案。
3. 通過上傳封包件管理源代碼
sae還可以通過上傳源碼包的方式,上傳源代碼。
Eclipse制作war包過程:
-
利用Eclipse生成
file->export->web->war 檔案 //該方法沒有成功,作者的MyEclipse下沒有web選項,不知道是不是因為項目不是web類的。。。帶确認。
-
工具用不成,原生态jar指令生成
打開cmd,切換檔案的項目根目錄下 、
cd /d e://workspace/wechatserver1
jar -cvf wechatserver1.war *.*
-
坑,第二種方法好像隻能添加檔案進去,檔案夾内容不能添加,不懂啊
殺手锏
利用winrar壓縮,我們已經說過JAR包與ZIP包主要差別就是JAR包中多一個META-INF的目錄,META-INF目錄下有一個manifest.mf檔案,我們隻要建立好相關的目錄一壓縮就可以了。
直接利用winrar軟體壓縮webroot根目錄檔案,然後修改字尾為war,上傳伺服器,即可。
4. Iterator(疊代器)的一般用法
疊代器(Iterator)是一種設計模式,它是一個對象,它可以周遊并選擇序列中的對象,而開發人員不需要了解該序列的底層結構。疊代器通常被稱為“輕量級”對象,因為建立它的代價小。
Java中的Iterator功能比較簡單,并且隻能單向移動:
- 使用方法iterator()要求容器傳回一個Iterator。第一次調用Iterator的next()方法時,它傳回序列的第一個元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。
- 使用next()獲得序列中的下一個元素。
- 使用hasNext()檢查序列中是否還有元素。
- 使用remove()将疊代器新傳回的元素删除。
Iterator是Java疊代器最簡單的實作,為List設計的ListIterator具有更多的功能,它可以從兩個方向周遊List,也可以從List中插入和删除元素。
疊代器應用:
list l = new ArrayList();
l.add(“aa”);
l.add(“bb”);
l.add(“cc”);
for (Iterator iter = l.iterator(); iter.hasNext();) {
String str = (String)iter.next();
System.out.println(str);
}
…