天天看點

微信公衆平台java開發詳解(工程代碼+解析)

說明:

本次的教程主要是對微信公衆平台開發者模式的講解,網絡上很多類似文章,但很多都讓初學微信開發的人一頭霧水,是以總結自己的微信開發經驗,将微信開發的整個過程系統的列出,并對主要代碼進行講解分析,讓初學者盡快上手。

在閱讀本文之前,應對微信公衆平台的官方開發文檔有所了解,知道接收和發送的都是xml格式的資料。另外,在做内容回複時用到了圖靈機器人的api接口,這是一個自然語言解析的開放平台,可以幫我們解決整個微信開發過程中最困難的問題,此處不多講,下面會有其詳細的調用方式。

抄寫代碼出現的問題:

1.OutputStream os=response.getOutputStream()這樣寫是錯的,不能轉換,但是我看視訊裡這樣寫就沒錯啊,求解答

你在頭上導入OutputStream的包就可以了

import java.io.OutputStream;

ServletOutputStream是OutputStream 的子類

我今天也遇到了這個問題 ,解決了 ,因為你先寫的response.getOutputStream();是以他會先判斷後面的錯誤,你在寫前面的OutputStream的時候他會先報後面的問題 ,讓你轉換成ServletOutputStream os = response.getOutputStream();

添加jar包的兩種方法

1. 手動添加

  1. 在工程下建立一個Folder(目錄),叫lib,把dom4j的包複制、粘貼進來。
  2. 右擊工程,點選“Build Path” - “Configure Build Path” - “Libraries”,點選“Add JARs”,浏覽到工程\lib\dom4j*.jar,“OK”,再“OK”
  3. 然後在.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用戶端。)

  1. 在碼雲建立倉庫,步驟不描述。
  2. 使用Git-scm在項目所在檔案夾,初始化,使項目建立本地倉庫。
  3. 建立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包過程:

  1. 利用Eclipse生成

    file->export->web->war 檔案 //該方法沒有成功,作者的MyEclipse下沒有web選項,不知道是不是因為項目不是web類的。。。帶确認。

  2. 工具用不成,原生态jar指令生成

    打開cmd,切換檔案的項目根目錄下 、

    cd /d e://workspace/wechatserver1

    jar -cvf wechatserver1.war *.*

  3. 坑,第二種方法好像隻能添加檔案進去,檔案夾内容不能添加,不懂啊

    殺手锏

    利用winrar壓縮,我們已經說過JAR包與ZIP包主要差別就是JAR包中多一個META-INF的目錄,META-INF目錄下有一個manifest.mf檔案,我們隻要建立好相關的目錄一壓縮就可以了。

    直接利用winrar軟體壓縮webroot根目錄檔案,然後修改字尾為war,上傳伺服器,即可。

4. Iterator(疊代器)的一般用法

  疊代器(Iterator)是一種設計模式,它是一個對象,它可以周遊并選擇序列中的對象,而開發人員不需要了解該序列的底層結構。疊代器通常被稱為“輕量級”對象,因為建立它的代價小。

  Java中的Iterator功能比較簡單,并且隻能單向移動:

  1. 使用方法iterator()要求容器傳回一個Iterator。第一次調用Iterator的next()方法時,它傳回序列的第一個元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。
  2. 使用next()獲得序列中的下一個元素。
  3. 使用hasNext()檢查序列中是否還有元素。
  4. 使用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);

}