国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
一、公眾平臺(tái)的通訊過(guò)程
二、XML通訊格式
三、一些需要注意和容易被忽視的問(wèn)題:
四、工欲善其事,必先利其器:Senparc.Weixin.MP.dll
首頁(yè) 微信小程序 微信開(kāi)發(fā) Senparc.Weixin.MP SDK 微信公眾平臺(tái)開(kāi)發(fā)教程(二):成為開(kāi)發(fā)者

Senparc.Weixin.MP SDK 微信公眾平臺(tái)開(kāi)發(fā)教程(二):成為開(kāi)發(fā)者

Feb 22, 2017 pm 03:28 PM
微信公眾平臺(tái)

? ? 我覺(jué)得做好成為開(kāi)發(fā)者的準(zhǔn)備比稀里糊涂開(kāi)通微信后臺(tái)的“高級(jí)”功能更重要,所以這一節(jié)先放在前面說(shuō)。

一、公眾平臺(tái)的通訊過(guò)程

? ? 作為開(kāi)發(fā)者,我們需要面對(duì)的主要有兩個(gè)對(duì)象:微信服務(wù)器和應(yīng)用程序(網(wǎng)站)服務(wù)器。

? ? 當(dāng)微信用戶(hù)向你的公眾平臺(tái)發(fā)送一條消息,實(shí)際上這條消息首先發(fā)送到微信服務(wù)器,由微信服務(wù)器向網(wǎng)站服務(wù)器發(fā)起另外一個(gè)請(qǐng)求,網(wǎng)站服務(wù)器返回這個(gè)請(qǐng)求的結(jié)果,再由微信服務(wù)器發(fā)送到微信客戶(hù)端。

? ? 整個(gè)消息通訊流程如下圖:

? ??Senparc.Weixin.MP SDK 微信公眾平臺(tái)開(kāi)發(fā)教程(二):成為開(kāi)發(fā)者

? ? 上述5個(gè)步驟中,作為開(kāi)發(fā)者我們主要精力都集中在步驟3上,這個(gè)步驟主實(shí)際上要有3項(xiàng)任務(wù):

  1. 接收來(lái)自2的XML信息

  2. 服務(wù)器內(nèi)部邏輯執(zhí)行

  3. 組織并返回用于4的XML信息

? ? 上述三項(xiàng)任務(wù)我會(huì)在后面做詳細(xì)說(shuō)明,并提供一整套簡(jiǎn)單、高效的處理方法。

二、XML通訊格式

? ? 用戶(hù)使用微信客戶(hù)端發(fā)送的不同類(lèi)型的消息,網(wǎng)站服務(wù)器會(huì)收到不同格式的數(shù)據(jù)(文字、語(yǔ)音、圖片等等),數(shù)據(jù)格式暫時(shí)只有XML一種。

? ? 作為學(xué)習(xí),我覺(jué)得只要熟練掌握最簡(jiǎn)單的文字類(lèi)型就可以了,其他的格式都是大同小異。且在后面的說(shuō)明中你會(huì)發(fā)現(xiàn),Senparc.Weixin.MP.dll可以幫助我們完全忽略這些繁瑣的格式和定義。

? ? 一個(gè)簡(jiǎn)單的文字請(qǐng)求XML(RequestMessage)內(nèi)容如下:

<xml>
    <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName>
    <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName>
    <CreateTime>1357986928</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[TNT2]]></Content>
    <MsgId>5832509444155992350</MsgId>
</xml>

  對(duì)應(yīng)節(jié)點(diǎn)的官方說(shuō)明如下:

參數(shù)描述
ToUserName開(kāi)發(fā)者微信號(hào)
FromUserName發(fā)送方帳號(hào)(一個(gè)OpenID)
CreateTime消息創(chuàng)建時(shí)間 (整型)
MsgTypetext
Content文本消息內(nèi)容
MsgId消息id,64位整型

一個(gè)簡(jiǎn)單的文字返回XML(ResponseMessage)內(nèi)容如下:

<xml>
   <ToUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></ToUserName>
   <FromUserName><![CDATA[gh_a96a4a619366]]></FromUserName>
   <CreateTime>12345678</CreateTime>
   <MsgType><![CDATA[text]]></MsgType>
   <Content><![CDATA[content]]></Content>
   <FuncFlag>0</FuncFlag>
</xml>

  對(duì)應(yīng)節(jié)點(diǎn)的官方說(shuō)明如下:

參數(shù) 描述
ToUserName 接收方帳號(hào)(收到的OpenID)
FromUserName 開(kāi)發(fā)者微信號(hào)
CreateTime 消息創(chuàng)建時(shí)間
MsgType text
Content 回復(fù)的消息內(nèi)容,長(zhǎng)度不超過(guò)2048字節(jié)
FuncFlag 位0x0001被標(biāo)志時(shí),星標(biāo)剛收到的消息。

?

?

?

?

?

?


三、一些需要注意和容易被忽視的問(wèn)題:

  1. 每條XML信息都有大小限制,如文本信息,建議Content內(nèi)容不要超過(guò)600字。

  2. 上圖中,步驟2開(kāi)始之后,微信服務(wù)器有一個(gè)等待時(shí)間:5秒,如果在這個(gè)時(shí)間內(nèi)沒(méi)有進(jìn)行到步驟4,那么這個(gè)請(qǐng)求將會(huì)被關(guān)閉(包括數(shù)據(jù)傳輸?shù)臅r(shí)間)。也就是說(shuō)如果超過(guò)時(shí)間,即使網(wǎng)站服務(wù)器返回了數(shù)據(jù),客戶(hù)端也無(wú)法收到回復(fù)。

  3. 在文本消息中,是允許添加標(biāo)簽來(lái)放置連接的,但是有許多朋友測(cè)試之后發(fā)現(xiàn)iOS沒(méi)問(wèn)題,Android上鏈接無(wú)法點(diǎn)擊,其實(shí)原因是(至少目前為止):Android的微信客戶(hù)端對(duì)標(biāo)簽格式的判定比較嚴(yán)格,請(qǐng)嚴(yán)格按照這個(gè)格式書(shū)寫(xiě):內(nèi)容,href后不要使用單引號(hào),也不要添加其他屬性。

  4. 上面XML節(jié)點(diǎn)中的FromUserName即微信用戶(hù)的OpenId,對(duì)于同一個(gè)公眾賬號(hào),這個(gè)OpenId的前6位是一致的,并且在整個(gè)公眾平臺(tái)的記錄中也是唯一的。也就是說(shuō)同一個(gè)用戶(hù)關(guān)注了兩個(gè)不同的公眾賬號(hào),他會(huì)有兩個(gè)不同的OpenId。

  5. CreateTime使用的是Unix時(shí)間,因此如果使用C#的話(huà),需要做一個(gè)轉(zhuǎn)換。

  6. 盡量保持官方API中XML節(jié)點(diǎn)的順序,以前微信服務(wù)器是使用節(jié)點(diǎn)位置的方式讀取信息的(node[0]),而非節(jié)點(diǎn)名稱(chēng),現(xiàn)在這個(gè)問(wèn)題似乎有好轉(zhuǎn),不過(guò)還是要小心(¥…………&%&……)。

  7. 由于這種特殊的通訊方式,(至少目前為止)所有請(qǐng)求必須從客戶(hù)端先發(fā)起,不要指望光使用API或SDK可以實(shí)現(xiàn)由網(wǎng)站服務(wù)器主動(dòng)推送消息到客戶(hù)端(當(dāng)然其他辦法還是有的,比如模擬登陸)。

四、工欲善其事,必先利其器:Senparc.Weixin.MP.dll

? ? 雖然整個(gè)通訊過(guò)程十分簡(jiǎn)單,但是官方API還是對(duì)一些字段做了特殊的約定或處理,況且面向過(guò)程地處理這么多類(lèi)型的請(qǐng)求數(shù)據(jù)也是一件十分費(fèi)力的事情。

? ? 為此我做了一個(gè)開(kāi)源項(xiàng)目:Senparc.Weixin.MP,地址:http://www.miracleart.cn/

? ? Senparc.Weixin.MP的主要目的是幫助C#開(kāi)發(fā)者簡(jiǎn)化整個(gè)通訊過(guò)程,面向?qū)ο蟮靥幚硐?,把主要精力放到業(yè)務(wù)邏輯上,而非繁瑣的API上。

? ? 使用Senparc.Weixin.MP,并部署到外網(wǎng)與微信服務(wù)器通訊,你需要準(zhǔn)備這些環(huán)境:

  1. VS2012(至少VS2010 SP1);

  2. 如果需要運(yùn)行MVC的Demo,至少需要.NET 4.0(安裝MVC 4),運(yùn)行Webforms Demo,至少需要.NET 3.5;

  3. 一個(gè)可以使用80端口訪(fǎng)問(wèn)的域名或IP,虛擬主機(jī)、花生殼映射內(nèi)網(wǎng)、VPS、獨(dú)立服務(wù)器都可以。

?

更多Senparc.Weixin.MP SDK 微信公眾平臺(tái)開(kāi)發(fā)教程(二):成為開(kāi)發(fā)者相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!


本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線(xiàn)人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話(huà)題

Laravel 教程
1600
29
PHP教程
1502
276