當前位置:首頁 » 編程語言 » java微信開發平台

java微信開發平台

發布時間: 2022-12-11 08:14:45

『壹』 如何用java開發微信

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

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


1.1 在登錄微信官方平台之後,開啟開發者模式,此時需要我們填寫url和token,所謂url就是我們自己伺服器的介面,用WechatServlet.java來實現,相關解釋已經在注釋中說明,代碼如下:

[java]view plain

  • packagedemo.servlet;

  • importjava.io.BufferedReader;

  • importjava.io.IOException;

  • importjava.io.InputStream;

  • importjava.io.InputStreamReader;

  • importjava.io.OutputStream;

  • importjavax.servlet.ServletException;

  • importjavax.servlet.http.HttpServlet;

  • importjavax.servlet.http.HttpServletRequest;

  • importjavax.servlet.http.HttpServletResponse;

  • importdemo.process.WechatProcess;

  • /**

  • *微信服務端收發消息介面

  • *

  • *@authorpamchen-1

  • *

  • */

  • {

  • /**

  • *ThedoGetmethodoftheservlet.<br>

  • *

  • *.

  • *

  • *@paramrequest

  • *

  • *@paramresponse

  • *

  • *@throwsServletException

  • *ifanerroroccurred

  • *@throwsIOException

  • *ifanerroroccurred

  • */

  • publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

  • throwsServletException,IOException{

  • request.setCharacterEncoding("UTF-8");

  • response.setCharacterEncoding("UTF-8");

  • /**讀取接收到的xml消息*/

  • StringBuffersb=newStringBuffer();

  • InputStreamis=request.getInputStream();

  • InputStreamReaderisr=newInputStreamReader(is,"UTF-8");

  • BufferedReaderbr=newBufferedReader(isr);

  • Strings="";

  • while((s=br.readLine())!=null){

  • sb.append(s);

  • }

  • Stringxml=sb.toString();//次即為接收到微信端發送過來的xml數據

  • Stringresult="";

  • /**判斷是否是微信接入激活驗證,只有首次接入驗證時才會收到echostr參數,此時需要把它直接返回*/

  • Stringechostr=request.getParameter("echostr");

  • if(echostr!=null&&echostr.length()>1){

  • result=echostr;

  • }else{

  • //正常的微信處理流程

  • result=newWechatProcess().processWechatMag(xml);

  • }

  • try{

  • OutputStreamos=response.getOutputStream();

  • os.write(result.getBytes("UTF-8"));

  • os.flush();

  • os.close();

  • }catch(Exceptione){

  • e.printStackTrace();

  • }

  • }

  • /**

  • *ThedoPostmethodoftheservlet.<br>

  • *

  • *

  • *post.

  • *

  • *@paramrequest

  • *

  • *@paramresponse

  • *

  • *@throwsServletException

  • *ifanerroroccurred

  • *@throwsIOException

  • *ifanerroroccurred

  • */

  • publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

  • throwsServletException,IOException{

  • doGet(request,response);

  • }

  • }

  • 1.2 相應的web.xml配置信息如下,在生成WechatServlet.java的同時,可自動生成web.xml中的配置。前面所提到的url處可以填寫例如:http;//伺服器地址/項目名/wechat.do

    [html]view plain

  • <?xmlversion="1.0"encoding="UTF-8"?>

  • <web-appversion="2.5"

  • xmlns="http://java.sun.com/xml/ns/javaee"

  • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  • xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

  • http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  • <servlet>

  • <description></description>

  • <display-name></display-name>

  • <servlet-name>WechatServlet</servlet-name>

  • <servlet-class>demo.servlet.WechatServlet</servlet-class>

  • </servlet>

  • <servlet-mapping>

  • <servlet-name>WechatServlet</servlet-name>

  • <url-pattern>/wechat.do</url-pattern>

  • </servlet-mapping>

  • <welcome-file-list>

  • <welcome-file>index.jsp</welcome-file>

  • </welcome-file-list>

  • </web-app>

  • 1.3 通過以上代碼,我們已經實現了微信公眾平台開發的框架,即開通開發者模式並成功接入、接收消息和發送消息這三個步驟。


    下面就講解其核心部分——解析接收到的xml數據,並以文本類消息為例,通過圖靈機器人api介面實現智能回復。


    2.1 首先看一下整體流程處理代碼,包括:xml數據處理、調用圖靈api、封裝返回的xml數據。

    [java]view plain

  • packagedemo.process;

  • importjava.util.Date;

  • importdemo.entity.ReceiveXmlEntity;

  • /**

  • *微信xml消息處理流程邏輯類

  • *@authorpamchen-1

  • *

  • */

  • publicclassWechatProcess{

  • /**

  • *解析處理xml、獲取智能回復結果(通過圖靈機器人api介面)

  • *@paramxml接收到的微信數據

  • *@return最終的解析結果(xml格式數據)

  • */

  • publicStringprocessWechatMag(Stringxml){

  • /**解析xml數據*/

  • ReceiveXmlEntityxmlEntity=newReceiveXmlProcess().getMsgEntity(xml);

  • /**以文本消息為例,調用圖靈機器人api介面,獲取回復內容*/

  • Stringresult="";

  • if("text".endsWith(xmlEntity.getMsgType())){

  • result=newTulingApiProcess().getTulingResult(xmlEntity.getContent());

  • }

  • /**此時,如果用戶輸入的是「你好」,在經過上面的過程之後,result為「你也好」類似的內容

  • *因為最終回復給微信的也是xml格式的數據,所有需要將其封裝為文本類型返回消息

  • **/

  • result=newFormatXmlProcess().formatXmlAnswer(xmlEntity.getFromUserName(),xmlEntity.getToUserName(),result);

  • returnresult;

  • }

  • }

  • 2.2 解析接收到的xml數據,此處有兩個類,ReceiveXmlEntity.java和ReceiveXmlProcess.java,通過反射的機制動態調用實體類中的set方法,可以避免很多重復的判斷,提高代碼效率,代碼如下:

    [java]view plain

  • packagedemo.entity;

  • /**

  • *接收到的微信xml實體類

  • *@authorpamchen-1

  • *

  • */

  • publicclassReceiveXmlEntity{

  • privateStringToUserName="";

  • privateStringFromUserName="";

  • privateStringCreateTime="";

  • privateStringMsgType="";

  • privateStringMsgId="";

  • privateStringEvent="";

  • privateStringEventKey="";

  • privateStringTicket="";

  • privateStringLatitude="";

  • privateStringLongitude="";

  • privateStringPrecision="";

  • privateStringPicUrl="";

  • privateStringMediaId="";

  • privateStringTitle="";

  • privateStringDescription="";

  • privateStringUrl="";

  • privateStringLocation_X="";

  • privateStringLocation_Y="";

  • privateStringScale="";

  • privateStringLabel="";

  • privateStringContent="";

  • privateStringFormat="";

  • privateStringRecognition="";

  • publicStringgetRecognition(){

  • returnRecognition;

  • }

  • publicvoidsetRecognition(Stringrecognition){

  • Recognition=recognition;

  • }

  • publicStringgetFormat(){

  • returnFormat;

  • }

  • publicvoidsetFormat(Stringformat){

  • Format=format;

  • }

  • publicStringgetContent(){

  • returnContent;

  • }

  • publicvoidsetContent(Stringcontent){

  • Content=content;

  • }

  • publicStringgetLocation_X(){

  • returnLocation_X;

  • }

  • publicvoidsetLocation_X(StringlocationX){

  • Location_X=locationX;

  • }

  • publicStringgetLocation_Y(){

  • returnLocation_Y;

  • }

  • publicvoidsetLocation_Y(StringlocationY){

  • Location_Y=locationY;

  • }

  • publicStringgetScale(){

  • returnScale;

  • }

  • publicvoidsetScale(Stringscale){

  • Scale=scale;

  • }

  • publicStringgetLabel(){

  • returnLabel;

  • }

  • publicvoidsetLabel(Stringlabel){

  • Label=label;

  • }

  • publicStringgetTitle(){

  • returnTitle;

  • }

  • publicvoidsetTitle(Stringtitle){

  • Title=title;

  • }

  • publicStringgetDescription(){

  • returnDescription;

  • }

  • publicvoidsetDescription(Stringdescription){

  • Description=description;

  • }

  • publicStringgetUrl(){

  • returnUrl;

  • }

  • publicvoidsetUrl(Stringurl){

  • Url=url;

  • }

  • publicStringgetPicUrl(){

  • returnPicUrl;

  • }

  • publicvoidsetPicUrl(StringpicUrl){

  • PicUrl=picUrl;

  • }

  • publicStringgetMediaId(){

  • returnMediaId;

  • }

  • publicvoidsetMediaId(StringmediaId){

  • MediaId=mediaId;

  • }

  • publicStringgetEventKey(){

  • returnEventKey;

  • }

  • publicvoidsetEventKey(StringeventKey){

  • EventKey=eventKey;

  • }

  • publicStringgetTicket(){

  • returnTicket;

  • }

  • publicvoidsetTicket(Stringticket){

  • Ticket=ticket;

  • }

  • publicStringgetLatitude(){

  • returnLatitude;

  • }

  • publicvoidsetLatitude(Stringlatitude){

  • Latitude=latitude;

  • }

  • publicStringgetLongitude(){

  • returnLongitude;

  • }

  • publicvoidsetLongitude(Stringlongitude){

  • Longitude=longitude;

  • }

  • publicStringgetPrecision(){

  • returnPrecision;

  • }

  • publicvoidsetPrecision(Stringprecision){

  • Precision=precision;

  • }

  • publicStringgetEvent(){

  • returnEvent;

  • }

  • publicvoidsetEvent(Stringevent){

  • Event=event;

  • }

  • publicStringgetMsgId(){

  • returnMsgId;

  • }

  • publicvoidsetMsgId(StringmsgId){

  • MsgId=msgId;

  • }

  • publicStringgetToUserName(){

  • returnToUserName;

  • }

  • publicvoidsetToUserName(StringtoUserName){

『貳』 微信公眾平台有 java sdk 嗎

微信公眾平台有自己的java sdk的,微信公眾平台也是一個開發平台,他們對第三方開發企業開放介面,讓更多微信公眾平台運營人員使用第三方的工具,如活動推送工具,可以對接【活動盒子】的java sdk,支付工具,客服工具這些的sdk也都可以對接。

『叄』 怎麼搭建微信公眾平台java開發環境

這個比較復雜,首先需要申請一個微信公眾的訂閱好或服務號,還要開通各種介面,然後在本地安裝java開發環境,包括開發工具如eclipse,myeclipse。最重要的是能在公網有一個地址映射到本地,如果是在區域網,則需要藉助第三方工具,推薦使用花生殼、nat123,其中nat123是個比較好的工具,很好的解決了運營商80埠封鎖的問題,因為微信公眾平台配置伺服器的URL只能是80埠。

『肆』 Java 開發 微信公眾平台開發 URL驗證

和訂閱號和服務號不一樣,企業號只有企業通信錄員工才能關

注,同時,一個企業號可以配置多個類似的服務號應用,發送信息

的條數無限制,還能對信息進行安全設置,確保信息的安全性和私密

性。

企業號申請和訂閱號以及服務號申請的前期准備和步驟相

同。比如,准備好一個注冊郵箱,然後進行郵箱驗證。但是從驗證之後

的申請步驟就有所區別了。在郵箱激活後,用戶進入選擇賬號類型,選

擇點擊「企業號」,會彈出溫馨提示對話框,提醒選擇企業號後不可更

改,是否繼續操作,點擊「確認」,進入用戶信息登記頁面。

『伍』 如何使用java開發微信公眾平台介面

1、首先,要在微信公眾平台給你的賬號申請到「高級功能」 ;前台也就是菜單要想個性化設置必須要有這個功能,不然你只能添加菜單和關閉,但不能刪除,還有自動回復也是。
2、後台要看你自己了。

『陸』 微信公眾平台可以用java寫嗎

可以,我現在的項目就是java後台開發的微信公眾平台,唯一要注意的就是公眾平台openid的使用

『柒』 微信開發平台中有個介面是上傳多媒體文件,我用的是java 開發的,我怎麼樣才能在後台實現呢代碼如下:

/**
*文件上傳到微信伺服器
*@paramfileType文件類型
*@paramfilePath文件路徑
*@returnJSONObject
*@throwsException
*/
publicstaticJSONObjectsend(StringfileType,StringfilePath)throwsException{
Stringresult=null;
Filefile=newFile(filePath);
if(!file.exists()||!file.isFile()){
thrownewIOException("文件不存在");
}
/**
*第一部分
*/
URLurlObj=newURL("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token="+getAccess_token()+"&type="+fileType+"");
HttpURLConnectioncon=(HttpURLConnection)urlObj.openConnection();
con.setRequestMethod("POST");//以Post方式提交表單,默認get方式
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);//post方式不能使用緩存
//設置請求頭信息
con.setRequestProperty("Connection","Keep-Alive");
con.setRequestProperty("Charset","UTF-8");
//設置邊界
StringBOUNDARY="----------"+System.currentTimeMillis();
con.setRequestProperty("Content-Type","multipart/form-data;boundary="+BOUNDARY);
//請求正文信息
//第一部分:
StringBuildersb=newStringBuilder();
sb.append("--");//必須多兩道線
sb.append(BOUNDARY);
sb.append(" ");
sb.append("Content-Disposition:form-data;name="file";filename=""+file.getName()+"" ");
sb.append("Content-Type:application/octet-stream ");
byte[]head=sb.toString().getBytes("utf-8");
//獲得輸出流
OutputStreamout=newDataOutputStream(con.getOutputStream());
//輸出表頭
out.write(head);
//文件正文部分
//把文件已流文件的方式推入到url中
DataInputStreamin=newDataInputStream(newFileInputStream(file));
intbytes=0;
byte[]bufferOut=newbyte[1024];
while((bytes=in.read(bufferOut))!=-1){
out.write(bufferOut,0,bytes);
}
in.close();
//結尾部分
byte[]foot=(" --"+BOUNDARY+"-- ").getBytes("utf-8");//定義最後數據分隔線
out.write(foot);
out.flush();
out.close();
StringBufferbuffer=newStringBuffer();
BufferedReaderreader=null;
try{
//定義BufferedReader輸入流來讀取URL的響應
reader=newBufferedReader(newInputStreamReader(con.getInputStream()));
Stringline=null;
while((line=reader.readLine())!=null){
//System.out.println(line);
buffer.append(line);
}
if(result==null){
result=buffer.toString();
}
}catch(IOExceptione){
System.out.println("發送POST請求出現異常!"+e);
e.printStackTrace();
thrownewIOException("數據讀取異常");
}finally{
if(reader!=null){
reader.close();
}
}
JSONObjectjsonObj=newJSONObject(result);
returnjsonObj;
}

『捌』 在微信公共平台 java怎麼開發

用java編寫後台服務端,之後把服務端進行部署,把部署後的url填寫到微信公眾號開發者中心的相應位置。

熱點內容
sql資料庫的埠 發布:2025-01-22 12:20:02 瀏覽:362
安卓最終幻想8怎麼設置中文 發布:2025-01-22 12:19:23 瀏覽:651
怎麼查電腦配置和網路 發布:2025-01-22 12:19:16 瀏覽:586
linuxsnmp查看 發布:2025-01-22 12:17:49 瀏覽:37
安卓數據線怎麼接藍牙 發布:2025-01-22 12:07:29 瀏覽:229
扣扣賬號多少次密碼不正確會被封 發布:2025-01-22 12:07:19 瀏覽:400
python是32位還是64位 發布:2025-01-22 11:51:41 瀏覽:894
鈴聲多多緩存文件夾 發布:2025-01-22 11:51:39 瀏覽:724
java按鍵精靈 發布:2025-01-22 11:49:31 瀏覽:81
python配色 發布:2025-01-22 11:46:40 瀏覽:613