国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

WapPushAccessProtocol(PAP)介紹

來源:懂視網 責編:小采 時間:2020-11-09 15:29:41
文檔

WapPushAccessProtocol(PAP)介紹

WapPushAccessProtocol(PAP)介紹:最近因為某些項目的原因,需要實現WapPush的功能,本想偷懶在網上搜索一下,看有沒有合適的內容,結果找不到一個合適的.只好自已動手來寫一個. 看了一下PAP協議的內容,其實也并不復雜,屬于HTTP協議的擴展,因此,使用.NET的HttpWebRequest類庫便可以方便的
推薦度:
導讀WapPushAccessProtocol(PAP)介紹:最近因為某些項目的原因,需要實現WapPush的功能,本想偷懶在網上搜索一下,看有沒有合適的內容,結果找不到一個合適的.只好自已動手來寫一個. 看了一下PAP協議的內容,其實也并不復雜,屬于HTTP協議的擴展,因此,使用.NET的HttpWebRequest類庫便可以方便的

最近因為某些項目的原因,需要實現WapPush的功能,本想偷懶在網上搜索一下,看有沒有合適的內容,結果找不到一個合適的.只好自已動手來寫一個. 看了一下PAP協議的內容,其實也并不復雜,屬于HTTP協議的擴展,因此,使用.NET的HttpWebRequest類庫便可以方便的實現PAP

  最近因為某些項目的原因,需要實現WapPush的功能,本想偷懶在網上搜索一下,看有沒有合適的內容,結果找不到一個合適的.只好自已動手來寫一個.

  看了一下PAP協議的內容,其實也并不復雜,屬于HTTP協議的擴展,因此,使用.NET的HttpWebRequest類庫便可以方便的實現PAP的通訊層.剩下的工作便是PAP協議內容的組合了,PAP協議主要有四個方法及一個交互方法,分別是:

  • Submit a Push 提交一個Push信息
  • Cancel a Push 取消一個Push信息
  • Query for status of a Push 查詢提交Push信息的狀態
  • Query for wireless device capabilities 查詢無線設備能力
  •   如果需要接收PPG(推送代理網關)返回的發送結果通知消息,則需要提供一個回調地址,供PPG發送通知響應.PI(推送發起人)與PPG之間的關系如下圖:

      PI端與PPG之間使用PAP協議通訊,PPG則調用空中協議傳送到手機端.

      

      上圖則是PI發送一個WapPush信息,PI與PPG之間的交互過程

    1. PI發起一個推送請求
    2. PPG返回一個接收響應包
    3. PPG推送WapPush到手機終端
    4. 手機終端響應接收結果
    5. PPG推最終發送結果到PI端
    6. PI端返回一個響應包到PPG,完成整個發送過程

      對于Cancel a Push, Query for status of a Push , Query for wireless device capabilities 這三種方式,都是PI與PPG之間的交互,即發起請求,得到響應的方式,因此,不作詳細說明.

    消息體格式

      PAP協議的消息體是采用多段的方式提交請求的,即Content-Type類型為"multipart/related",到于具體的信息,可以參考RFC2387.整個PAP協議包包括三種結構,分別為

  • 控制實體(Control Entity):提供一些控制命令
  • 內容實體(Content Entity):提供傳送的內容信息
  • 能力實體(Capabilities Entity):提供終端的支持的能力配置信息
  • 除了推送消息需要使用到三種消息以外,其它請求方法都只使用到控制實體包。這三種類型的包都是MIME類型格式,下面是一個請求包的具體格式

    Content-Type: multipart/related; boundary=asdlfkjiurwghasf;
    type="application/xml"

    --asdlfkjiurwghasf
    Content-Type: application/xml


    "http://www.wapforum.org/DTD/pap_2.0.dtd"
    []>

    ..control for PPG..

    --asdlfkjiurwghasf
    Content-Type: text/vnd.wap.si

    ..Service Indication push message example..

    --asdlfkjiurwghasf
    Content-Type: application/xml

    ..assumed client capabilities..

    --asdlfkjiurwghasf--

    控制實體介紹

      控制實體的定義如下

    | push-response
    | cancel-message
    | cancel-response
    | resultnotification-message
    | resultnotification-response
    | statusquery-message
    | statusquery-response
    | ccq-message
    | ccq-response
    | badmessage-response) >
    product-name CDATA #IMPLIED
    >

      它一共支持11種控制命令,這些命令都必須放在PAP節點下面,如:

      

    支持的11種控制命令分別如下:

    push-message :PI -> PPG ,發起一個Push請求
    push-response :PPG -> PI,PPG對Push請求的響應結果
    cancel-message :PI->PPG,取消消息的請求
    cancel-response :PPG -> PI,PPG對取消請求的響應結果
    resultnotification-message :PPG->PI,結果提醒消息,由PPG調用通過PUSH消息時提供的通知地址傳送
    resultnotification-response:PI->PPG,PI端對PPG的結果提醒消息的響應
    statusquery-message :PI->PPG,狀態查詢消息,查詢發送消息的當前狀態
    statusquery-response :PPG->PI,PPG對查詢請求的響應結果
    ccq-message :PI->PPG,發起一個終端能力查詢請求
    ccq-response :PPG->PI,PPG對終端能力查詢的響應結果
    badmessage-response:PPG->PI,PPG在接收到錯誤請求包的時候,返回的響應信息

    push-message介紹

    結構定義如下:


    push-id CDATA #REQUIRED
    replace-push-id CDATA #IMPLIED
    replace-method ( pending-only | all ) "all"
    deliver-before-timestamp %Datetime; #IMPLIED
    deliver-after-timestamp %Datetime; #IMPLIED
    source-reference CDATA #IMPLIED
    ppg-notify-requested-to CDATA #IMPLIED
    progress-notes-requested ( true | false ) "false"
    >


    address-value CDATA #REQUIRED
    >


    priority ( high | medium | low ) "medium"
    delivery-method ( confirmed | preferconfirmed
    | unconfirmed | notspecified ) "notspecified"
    network CDATA #IMPLIED
    network-required ( true | false ) "false"
    bearer CDATA #IMPLIED
    bearer-required ( true | false ) "false"
    >

      push-message節點是推送一個消息的控制節點,它有多個屬性,含義如下:

    push-id:推送流水ID,由PI端創建管理,需要全局唯一,返回響應包、通知包會根據此ID來判斷請求
    replace-push-id:替換推送ID,指被替換的舊PushID,多用于使用新的消息替換以提交卻未發送的消息
    replace-method:替換的方法,有pending-only和all兩種選項可選,all表示替換舊消息的所有接收者,pending-only則表示替換有可能被取消的接收者
    deliver-before-timestamp:發送終止時間,指超過指定的時間則不發送消息了,格式為標準的UTC時間:YYYY-MM-DDThh:mm:ssZ
    deliver-after-timestamp:發送的開始時間,須在指定的時間才能開始發送,格式為標準的UTC時間:YYYY-MM-DDThh:mm:ssZ
    source-reference:內容提供者的文本名稱,PPG網關可能需要此參數判斷PI的權限及能力
    ppg-notify-requested-to:PPG發送結果響應請求的Url地址
    progress-notes-requested:是否在響應包中包括處理日志信息
      address節點需要包括在push-message節點下,如果有多個接收人,則增加多個address節點即可,address-value是實際的接收地址,它可以是一個邏輯地址,具體的格式大致如下:
    wappush=12345678/type=PLMN@ppg.operator.com

      quality-of-service節點也須要放在push-message節點下,它描述了當前消息的各種發送屬性,如:優先級、使用網絡、承載體等,不同的網絡或許有不同的參數,請咨詢相應的運營商。

    具體的參數說明可以參考標準文檔:wap-247

    push-response介紹


    push-id CDATA #REQUIRED
    sender-address CDATA #IMPLIED
    sender-name CDATA #IMPLIED
    reply-time %Datetime; #IMPLIED
    >

      push-response是PI提交push-message到PPG后,PPG返回的響應包結構,它有四個屬性,如下:

    push-id:相關的push-id
    sender-address:發送者地址,一般是PPG的地址
    sender-name:發送者名稱,一般是PPG的名稱
    reply-time:應答時間,標準的UTC時間

    progress-note節點不多介紹,是屬于處理日志節點

    response-result節點包含了所發送消息的響應結果,其定義如下:


    code CDATA #REQUIRED
    desc CDATA #IMPLIED
    >
      code是響應的結果,具體可參考標準文檔的說明,desc則是相應的描述信息

      對于其它幾個請求結構相對簡單,此處不再說明,參考標準文檔即可。

    HTTP請求處理說明

      PAP協議是基于HTTP協議,因此,建立一個PAP協議只需要發起一個HTTP請求即可,截取一段發送代碼如下:

    Code
    //Pap請求
    HttpWebRequest papRequest = (HttpWebRequest)HttpWebRequest.Create(Config.ServiceUrl);
    papRequest.Method = "POST";
    papRequest.ContentType = "multipart/related; type=application/xml;boundary=" + IRequest.Boundary;
    papRequest.Headers.Add("Authorization", Config.EncPass);

    byte[] papData = rqeuestObj.GetBytes(Config.enc);

    Stream requestStream = papRequest.GetRequestStream();
    requestStream.Write(papData, 0, papData.Length);
    requestStream.Close();

    HttpWebResponse response = (HttpWebResponse)papRequest.GetResponse();
    StreamReader sr = new StreamReader(response.GetResponseStream(), Config.enc);
    ret = ReplaceXml(sr.ReadToEnd());
    sr.Close();

    主要設置幾個屬性,分別為Method、ContentType以及Authorization,對于前兩個不作說明,Authorization則表示認證信息,有些PPG網關不需要認證信息,因此可以忽略這個屬性。認證屬性的值為Base64編碼的字串,格式為:Base base64String

    用戶名和密碼以這樣的格式編寫:UserName:Password,然后對這個串進行編碼,放在Base 后面即可。表示基本的Base64認證串。對于其它的代碼就不多做解釋了:)大家可以看源碼。

    關于源碼:

      目前僅實現了PAP協議的解析、生成等功能,未實現對數據發送的隊列控制、流量控制等等,這些都需要進一步完善,如果各位有興趣完善的話,希望也提交到項目里面咯:)

    下載地址:http://paplib.codeplex.com/

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    WapPushAccessProtocol(PAP)介紹

    WapPushAccessProtocol(PAP)介紹:最近因為某些項目的原因,需要實現WapPush的功能,本想偷懶在網上搜索一下,看有沒有合適的內容,結果找不到一個合適的.只好自已動手來寫一個. 看了一下PAP協議的內容,其實也并不復雜,屬于HTTP協議的擴展,因此,使用.NET的HttpWebRequest類庫便可以方便的
    推薦度:
    標簽: wap access push
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品三级在线观看 | 精品国产成人综合久久小说 | 日韩高清第一页 | 久久91精品国产一区二区 | 亚洲欧美日韩电影 | 国产不卡的一区二区三区四区 | 久久久这里有精品999 | 欧美1区二区三区公司 | 午夜精品久久久久久毛片 | 欧美日韩亚洲综合另类ac | 国产综合精品一区二区 | 国产精彩视频在线观看 | 久久精品综合国产二区 | 久久精品韩国日本国产 | 免费又黄又爽又猛大片午夜 | 欧美日韩在线一区二区三区 | 国产日韩欧美在线观看不卡 | 黄a毛片 | 国产日韩欧美中文 | 国产精品一区二区午夜嘿嘿嘿小说 | 国外欧美一区另类中文字幕 | 欧美在线综合 | 国产在线欧美日韩精品一区二区 | 五十路在线播放 | 久久er99热精品一区二区 | 国产精品视频一区麻豆 | 精品久久久久中文字幕日本 | 欧美国产免费 | zozozo性欧美禽交3 | 欧美人善交 | 97精品高清一区二区三区 | 日韩在线视频二区 | 欧美视频亚洲色图 | 国产在线一区二区 | 亚洲 另类 在线 欧美 制服 | 在线国产视频 | 91欧美激情一区二区三区成人 | 国产毛片一区二区三区精品 | 日韩欧美国产高清 | 亚洲综合欧美日本另类激情 | 欧洲97色综合成人网 |