精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

BlackBerry開發(fā)中應用程序之MDS服務參考

移動開發(fā)
BlackBerry開發(fā)有很多值得學習的地方,本文向大家簡單介紹一下BlackBerry開發(fā)中應用程序之MDS服務參考,希望本文介紹對你有所幫助。

本文和大家重點學習一下BlackBerry開發(fā)中應用程序之MDS服務參考,主要包括HTTP請求,HTTP請求變量和HTTP響應等內(nèi)容,希望本文的介紹能讓你有所收獲。

BlackBerry開發(fā)中應用程序之MDS服務參考

HTTP請求[1]

一個客戶端建立一個連接,并且發(fā)送一個HTTP請求消息到服務器.服務器然后發(fā)送一個響應消息,這個消息通常包含了請求的資源.

  1. <method><resource_path><version> 
  2.  
  3. Header1:value1  
  4.  
  5. Header2:value2  
  6.  
  7. Header3:value3  
  8.  
  9. <optionalmessage> 
  10.  

 


HTTP請求變量

描述

method
方法名,指定了一個動作,例如GET,HEAD或POST.常用的方法是GET,它從服務器請求一個資源.

resource_path
指向請求資源的路徑,它是URL中的一部分,在主機名后面出現(xiàn).它也稱為請求URL(RequestURL).

version
你正在運行的HTTP版本,標記為”HTTP/x.x”.BES支持1.0和1.1版本.

Header
提供了關于請求的或在消息體里發(fā)送的對象的信息.

optionalmessage
HTTP消息可以包含數(shù)據(jù).在一個請求里,它是發(fā)送到服務器的用戶類型的數(shù)據(jù),或上傳的文件.當一個對象伴隨著此消息時,請求通常也包含定義它屬性的消息頭.

HTTP響應

在HTTP請求消息的接收之上,服務器發(fā)送一個響應消息,它通常包含了請求的資源.

  1. <HTTPversion><status_code><reason> 
  2.  
  3. Header1:value1  
  4.  
  5. Header2:value2  
  6.  
  7. Header3:value3  
  8.  
  9. <message> 
  10.  

 


HTTP響應變量

描述

HTTP_version
正在運行的HTTP版本,標記為”HTTP/x.x”.BES支持1.0和1.1版本.

status_code
狀態(tài)碼的數(shù)值,它反映了客戶端提出的請求的結果。例如,200(OK)說明了傳輸成功,404(NotFound)說明了請求的URL沒有找到。

reason
reason是和狀態(tài)碼相關的文本消息。

Header
消息頭提供了響應的信息,也提供了消息體中正在發(fā)送的對象的信息。

message
HTTP消息必須包含數(shù)據(jù)。在一個響應消息里,它提供了客戶端請求的的內(nèi)容。此響應也包含了定義它的屬性的消息頭。

注:應用程序應該檢查HTTP響應消息的狀態(tài)碼。任何不是200(OK)的狀態(tài)碼都說明當建立HTTP連接時發(fā)生了一個錯誤。#p#


Push請求響應狀態(tài)碼

為push請求連接服務,BlackBerryMDS返回2種響應碼:

lPAP(PushAccessProtocal)響應碼。

lRIMPush響應碼。

注:訪問[url]www.wapforum.org[/url]獲得更多關于PAP響應碼的信息。

RIMPush請求響應碼
RIMPush請求響應碼
描述
解釋

200
OK
請求成功完成。

400
任何其他的錯誤。


403
訪問控制錯誤,或者未知的郵件地址或特定的BlackBerryPIN。
服務器接收了請求,但是不能響應。

503
服務器忙,服務不可用。
當前,服務器不能管理請求,因為暫時的負載或服務器正在維護。

HTTPS支持
如果你的應用程序通過Internet訪問服務器,為了提過其他的驗證和安全,在TLS上建立一個安全的HTTP(HTTPS)連接。


HTTPS認證(Certificate)管理

當BlackBerry設備以代理模式請求一個HTTPS連接時,BlackBerryMDS服務為BlackBerry設備建立一個SSL連接。系統(tǒng)管理員配置MDS服務,要么允許連接到未信任的服務器,要么是限制訪問信任的服務器,這個配置僅適用代理模式下的連接。在end-to-end模式里,BlackBerry設備建立一個SSL連接。

在BlackBerry管理器里,系統(tǒng)管理員編輯MDS服務屬性,并且設置TLS和HTTP選項,為獲得更多信息,參看BES管理指南。

注:在MDS服務模擬器里,通過設置rimpublic.property文件來允許或拒絕訪問未信任的服務器。設置application.handler.https.allowUntrustedServer參數(shù)為true或false。參看177頁的“配置BlackBerryMDS模擬器”獲得更多信息。

如果MDS服務包含認證,MDS服務將信任一個服務器。

使用keytool安裝一個認證

1.保存認證。

2.將認證文件拷貝到MDS服務所在計算機上的C:\Java\j2re1.4.2\lib\security文件夾。

3.為了將認證導入到鍵存儲里,請使用keytool,它可以在JREbin文件夾下找到,例如C:\Java\j2re1.4.2\bin.例如,輸入:

keytool-import-file-keystorecacerts

訪問[url]http://java.sun.com/j2se/1.3/docs/tooldocs/win32/keytool.html[/url]獲得更多關于keytool的信息。


編碼轉化器

BlackBerryMDS支持插件的Java應用程序,稱為編碼轉化器,它處理BlackBerry設備發(fā)送和接收的數(shù)據(jù)。

MDS服務提供下列缺省的編碼轉化:

編碼轉化名
描述

WML>WMLC
將.wml(WirelessMarkupLanuage)轉化為一個壓縮的格式。

WMLScript>WMLScriptC
將MIDlet應用程序為BlackBerry格式。

JAD>COD:XML>WBXML
將xml文件轉化為下面的WAP二進制XML(.wbxml)MIME類型:application/vnd.wap.wbxml..

SVG>PME
將可svg(ScalableVectorGraphics)轉化為BlackBerry設備支持的pme(PlazmicMediaEngine)二進制格式.

圖像編碼轉化
將下列圖像的文件類型轉化為png文件:

Jpeg
Gif
Tiff
Pgm
Ppm
pnm:包含ASCII和二進制pbm,pgm和ppm文件
ico
wbmp
pbm
wbmp
bmp

注:圖像編碼轉化器將先前的圖像格式轉化為下面的.PNGMIME類型:image/vnd.rim.png.

你也可以編寫自己的編碼轉化器完成客戶化數(shù)據(jù)的處理.例如,如果你的應用程序正在和服務器交換數(shù)據(jù),而服務器不是為BlackBerry設備設計的,并且發(fā)送到服務器端的數(shù)據(jù)對BlackBerry設備來說沒有合適的格式.那么你可能編寫一個編碼轉化器.

一個編碼器可能改變數(shù)據(jù)格式或刪除冗余信息來降低網(wǎng)絡流量,并且支持BlackBerry設備上的簡單應用程序.例如,你可以編寫一個編碼轉化器將HTML內(nèi)容轉化為WML。.#p#


數(shù)據(jù)轉化處理

如果你專門編寫一個服務器端的應用程序支持一個BlackBerry設備上客戶應用程序,編碼轉化器就不需要了.你可以設計一個服務器應用程序一合適的格式輸出數(shù)據(jù).

在發(fā)送數(shù)據(jù)到BES之前,你也可以將數(shù)據(jù)處理作為一單獨的服務器端進程的一部分.

編碼轉化器API
主要的編碼轉化器類
描述

HttpContentTranscoder
此類提供方法來控制HTTP請求和響應的內(nèi)容和屬性.

HttpContentTranscoderException
本異常的拋出說明編碼轉化工程不成功.BlackBerry設備將把本異常作為IOException拋出.

HttpHeader
本類提供方法對HTTP請求和響應的消息頭進行操作.

HttpParameter
本類代表了HTTP查詢參數(shù).它提供獲取和設置參數(shù)名和值.

HttpRequest
本類擴展了HttpTransmission類,它代表了一個包含頭,參數(shù)和內(nèi)容的HTTP請求.

HttpResponse
本類擴展了HttpTransmission類,它代表了一個包含頭,參數(shù)和內(nèi)容的HTTP響應.

HttpTransmission
本類提供獲取和設置內(nèi)容,頭,以及HTTP請求和響應的參數(shù).

參看API參考獲得更多信息.

創(chuàng)建一個HTTP內(nèi)容編碼轉化器

為了創(chuàng)建一個HTTP內(nèi)容編碼轉化器來全面控制HTTP請求與響應內(nèi)容,擴展HttpContentTranscoder類.本編碼轉化器也可以修改,增加,或刪除HTTP請求與響應屬性.

編碼轉化器必須在net.rim.protocal.http.content.tanscoder.包里定義,在這里,是映射文件中使用的編碼轉化器的標志符.它的類名必須是Transcoder.

編碼轉化器的位置要么在httpcontenttranscoder文件指定,要么由應用程序指定.

處理HTTP內(nèi)容編碼轉化器異常

任何由編碼轉化器拋出的異常將作為IOException被發(fā)送到應用程序.相關具體的消息也拷貝到IOException中.

注:為代替拋出一個異常到HTTP連接處理器,一個編碼轉化器也可能發(fā)送一個HTTP響應到一個應用程序,這表明發(fā)生了一個內(nèi)部的服務器錯誤.


選擇編碼轉化器

當BlackBerry設備請求內(nèi)容時,MDS服務決定客戶端請求的內(nèi)容類型和服務器響應的內(nèi)容類型的比較是否需要一個編碼轉化器.如果類型不一樣,MDS服務檢查httpcontenttranscoder.property文件來決定一個編碼轉化器是否可用來轉化內(nèi)容.

BlackBerry設備發(fā)送的HTTP請求里,x-rim-transcode-content頭指定了MDS優(yōu)化服務轉化內(nèi)容的輸入格式.如果內(nèi)容遇見以下情形,MDS數(shù)據(jù)優(yōu)化服務將轉化內(nèi)容:

l由x-rim-transcode-content頭指定的輸入格式也HTTP請求的Accept頭中指定,此HTTP請求是MDS服務發(fā)送到服務器的請求.

lWeb服務器響應一個內(nèi)容類型,或者輸出類型,它和BlackBerry設備接受的類型不同.

lhttpcontenttranscoder.property文件包含了一個編碼轉化器,此編碼轉化器可以將Web服務器發(fā)送到MDS服務的內(nèi)容轉化為BlackBerry設備可接受的類型.

為了判斷當push內(nèi)容時一個編碼轉化器是否需要,MDS服務檢查內(nèi)容類型(content-type)和服務器端應用程序的x-rim-transcode-content頭.如果2者相同,MDS數(shù)據(jù)優(yōu)化服務將頭文件指定的內(nèi)容轉為為BlackBerry可以顯示的格式.

httpcontenttranscoder.property文件將輸入的格式轉化為一個給出的編碼轉化器.在下面的例子中,httpcontenttranscoder.property文件將.wml輸入格式轉化為.wbxml或.wmlc.

content-type:text/vnd.wap.wml

x-rim-transcode-content:text/vnd.wap.wml

你也可以創(chuàng)建定制的編碼轉化器來重新格式化或者轉化應用程序請求的數(shù)據(jù).例如,有愧樂意編寫一個編碼轉化器將HTML內(nèi)容轉為為WML.參看196也的”創(chuàng)建編碼轉化器”獲得更多信息.


HTTP請求

MDS服務使用MIME類型決定附加到一個服務器HTTP響應的內(nèi)容格式是否和BlackBerry設備請求的內(nèi)容格式相匹配.

MDS服務測試一列可用的編碼轉化器,并且擴展Accept頭.例如,如果一個請求接受WML的MIME類型和一個編碼轉化器存在的HTML-to-WML,將HTML加到Accept頭.參看195頁的”映射編碼轉化器”獲得更多信息.

在HTTP請求里,應用程序可以包含2個頭來控制它接收的內(nèi)容的類型:

lAccept頭

lContent-Transcoder頭.


描述

Accept
在HTTP請求的Accept頭里,應用程序列出它從內(nèi)容服務器接收的MIME類型.例如,如果應用程序可以接收WML或XML格式的內(nèi)容,它在HTTP請求里發(fā)送如下的消息頭:

Accept:text/wml,text/xml

缺省的,當Accept頭列出了不止一個MIME類型,MDS服務將從左到右分配引用,在這里列出的***個MIME類型假設為優(yōu)先的.

應用程序頁可以將質(zhì)量因子(Qualityfactor)賦值給MIME類型來表明優(yōu)先權.質(zhì)量因子范圍時0(***優(yōu)先權)到1(***優(yōu)先權),例如,下面的頭表明了編譯的WML(WMLC)是優(yōu)先的,但是WML是可接受的.

Accept:text/vnd.wap.wml;q=0.5,application/vnd.wap.wmlc;q=1

Content-Transcoder
Content-Transcoder頭是一個BlackBerry頭,在內(nèi)容返回到BlackBerry設備之前,它允許應用程序指定一個應用到任何內(nèi)容的特定編碼轉化器.使用Content-Transcoder頭覆寫MDS服務運用的缺省處理來選擇一個編碼轉化器.


HTTP響應

內(nèi)容服務器產(chǎn)生一個包含一個Content-Type頭的HTTP響應..Content-Type頭描述了一個特定數(shù)據(jù)包的MIME類型.例如,當內(nèi)容服務器一HTML格式返回內(nèi)容時,HTTP響應包含一個值為text/html的Content-Type頭.

MDS服務將應用程序的請求和內(nèi)容服務器的響應進行比較.下面的部分將描述MDS服務如何決定什么時候轉化內(nèi)容:

響應類型
描述

不需要編碼轉化
應用程序發(fā)送一個請求獲取WML格式的內(nèi)容.請求包含以下的頭:

Accept:text/vnd.wap.wml

在它的響應里,內(nèi)容服務器發(fā)送以下的頭:

Content-Type:text/vnd.wap.wml

因為服務器返回的內(nèi)容類型與BlackBerry請求類型相符,MDS服務不需要任何轉化.它將內(nèi)容毫無變化的轉發(fā)給BlackBerry設備.

需要編碼轉化
應用程序發(fā)動一個請求獲取內(nèi)容.請求包含一下內(nèi)容:

Accept:text/vnd.wap.wml;q=0.5,application/vnd.wap.wmlc;q=1

此消息頭表明應用程序接受WML或者編譯的WML格式(WMLC)的內(nèi)容.

在它的響應中,內(nèi)容服務器發(fā)送下面的頭:

Content-Type:text/vnd.wap.wml

因為服務器返回的內(nèi)容類型與BlackBerry請求類型不符,MDS服務搜索一個可以將MIME類型(WML)轉化為優(yōu)先的MIME類型(WMLC)的可用編碼轉化器.

如果一個適合的編碼轉化器不可用,MDS服務將WML內(nèi)容毫無變化的轉發(fā)給BlackBerry設備,因為初始請求表明BlackBerry設備應用程序接受WML內(nèi)容.

每個編碼轉化器都實現(xiàn)了一個方法創(chuàng)建一個哈希表,此哈希表映射作為來自內(nèi)容服務器的輸入,編碼轉化器接受的格式,以及作為輸出編碼轉化器創(chuàng)建的格式.

在啟動時,將自BlackBerry設備的HTTP請求轉發(fā)之前,MDS服務使用哈希表修改Accept頭域.例如,一個BlackBerry設備應用程序使用下面的Accept頭發(fā)送一個HTTP請求:

Accept:application/vnd.wap.wmlc,text/vnd.wap.wmlscriptc

在審查編碼轉化器映射表之后,MDS數(shù)據(jù)優(yōu)化服務加入下面的項到Accept頭里:

application/vnd.wap.wmlscript,text/wml,andtext/vnd.wap.wml

Accept:application/vnd.wap.wmlc,text/vnd.wap.wmlscriptc,application/vnd.wap.wmlscript,text/wml,text/vnd.wap.wml

這個擴展的Accept頭現(xiàn)在列出了所有內(nèi)容服務器可以提供的MIME類型.#p#


映射編碼轉化器

httpcontenttranscoder.property文件在你的BlackBerryJDE安裝目錄的MDS\config子目錄下.它指定了MDS數(shù)據(jù)優(yōu)化服務如何管理應用程序與內(nèi)容服務器之間的多種內(nèi)容類型的交換.

下面是httpcontenttranscoder.property的一個實例:

text/vnd.wap.wml->application/vnd.wap.wmlc:vnd.wap.wml

text/vnd.wap.wml->application/vnd.wap.wbxml:vnd.wap.wml

text/vnd.wap.wmlscript->application/vnd.wap.wmlscriptc:wmls

text/html->application/vnd.rim.html.filtered:html

text/vnd.wap.wml:vnd.wap.wml

text/vnd.sun.j2me.app-descriptor->application/vnd.rim.cod:vnd.rim.cod

default:pass

每個入口使用了下面的格式:

[->]:

在這里:

lInputType>是內(nèi)容服務器可用的MIME類型,或者default.

lOutputType>是BlackBerry設備請求的MIME類型.

lAction>是下列值之一:

n編碼轉化器包名,如vnd.wap.wml

nPass:在沒有改變下發(fā)送數(shù)據(jù).

nDiscard:放棄數(shù)據(jù),不發(fā)送它.

下面幾節(jié)解釋在httpcontenttranscoder.property文件里可能的輸入格式:

格式1

當服務器端可用的格式和BlackBerry設備請求的格式不同時,下面格式的入口指定了MDS完成的動作.

InputType->OutputType:TranscoderORRSV

例如,應用程序請求text/wml,但是內(nèi)容服務器只有text/xml.MDS服務找到下面的MIME類型入口:

Text/xml->Text/wml:vnd.wap.wml

根據(jù)本入口,MDS服務必須使用vnd.wap.wml編碼轉化器將XML內(nèi)容轉化為WML.

格式2

當服務器發(fā)送一個給定類型的內(nèi)容,不考慮BlackBerry設備請求的內(nèi)容,,下面格式的入口指定了MDS完成的動作.

InputType:TranscoderORRSV

例如,如果服務器僅有WML內(nèi)容(text/vnd.wap.xml),.MDS服務找到下面的MIME類型入口:

text/vnd.wap.wml:vnd.wap.wml

根據(jù)本入口,MDS服務必須使用vnd.wap.wml編碼轉化器將XML內(nèi)容轉化為WML.

缺省的入口

如果MDS服務不能為一個特定的MIME類型:

default:TranscoderorRSV

找到一個入口,一個缺省的入口指定了MDS服務完成的缺省動作.

例如,如果MDS服務不能為defualt:pass缺省入口的內(nèi)容找到一個入口,MDS服務將內(nèi)容毫無變化的轉發(fā)給BlackBerry設備.#p#


創(chuàng)建編碼轉化器

將HTML標記和內(nèi)容轉化為大寫
遵循編碼轉化器包層次結構(hierarchy)

在net.rim.protocol.http.content.transcoder. 包里定義HTTP內(nèi)容轉化器.所有HTTP內(nèi)容編碼轉化器必須在Transcoder包層次結構里定義.

packagenet.rim.protocol.http.content.transcoder.uppercasehtm

擴展HTTPContentTranscoder

一個編碼轉化器的類名必須為Transcoder.它擴展了HttpContentTranscoder類.

在本例中,一個公共類Transcoder定義了HTTP內(nèi)容編碼轉化器.

publicclassTranscoderextendsHttpContentTranscoder{…}


定義HTTP頭

為HTTP頭定義常數(shù)以及編碼轉化器加到這些頭的字符串.

  1. privatestaticfinalStringCONTENTTYPE_HEADER_NAME="Content-Type";  
  2.  
  3. privatestaticfinalStringCONTENTLENGTH_HEADER_NAME="Content-Length";  
  4.  
  5. privatestaticfinalStringACCEPT_HEADER_NAME="Accept";  
  6.  
  7. //AddthislinetotheAcceptheaderfieldifitexistswhen  
  8.  
  9. //theBlackBerrydeviceissuesanHTTPrequest.  
  10.  
  11. privatestaticfinalStringACCEPTLINE="text/html";  
  12.  
  13. //Thislineidentifiestheoutputcontenttypethatthistranscoderproduces.  
  14.  
  15. privatestaticfinalStringOUTPUT_TYPE="text/UPPERCASEHTML";  
  16.  

 

創(chuàng)建一個輸入和輸出類型的映射

getMapOfOutputToAcceptLine()的實現(xiàn)創(chuàng)建了一個編碼轉化器輸入和輸出類型之間的映射.

隨著啟動,MDS服務使用映射修改Accept消息頭域.MDS服務發(fā)送一個HTTP請求中修改的頭到一個HTTP服務器.

  1. publicHashMapgetMapOfOutputToAcceptLine(){  
  2.  
  3. HashMapmapping=newHashMap();  
  4.  
  5. mapping.put(OUTPUT_TYPE,ACCEPTLINE);  
  6.  
  7. returnmapping;  
  8.  
  9. }  
  10.  

 


設置連接URL

當BlackBerr設備請求一個打開的HTTP連接時,定義一個方法設置連接URL.

publicvoidsetURL(URLnewURL){

url=newURL;

}

定義BlackBerry設備的請求處理

在MDS服務將BlackBerry設備請求轉發(fā)到目標服務器之前,transcodeDevice(HttpRequest)的實現(xiàn)定義了任何對這些請求的處理.下面的例子不需要處理:

一個應用程序可以使用一個稱為Content-Transcoder的HTTP頭請求一個指定的編碼轉化器,

publicvoidtranscodeDevice(HttpRequestrequest)

throwsHttpContentTranscoderException{

//Implementation.

}

定義BlackBerry設備的響應處理

在MDS服務將BlackBerry設備響應轉發(fā)到目標服務器之前,transcodeDevice(HttpResponse)的實現(xiàn)定義了任何對這些響應的處理.下面的例子不需要處理:

publicvoidtranscodeDevice(HttpResponseresponse)

throwsHttpContentTranscoderException{

//Implementation.

}

定義服務器的請求處理

在MDS服務將它轉發(fā)到BlackBerry設備之前,transcodeServer(HttpRequest)的實現(xiàn)定義了任何對內(nèi)容服務器請求的處理需求.

  1. publicvoidtranscodeServer(HttpRequestrequest)  
  2.  
  3. throwsHttpContentTranscoderException{  
  4.  
  5. try{  
  6.  
  7. //Retrievetherequestcontent,which,inthiscase,isinHTML.  
  8.  
  9. byte[]requestrequestContent=request.getContent();  
  10.  
  11. if(requestContent!=null){  
  12.  
  13. //ConvertthecontenttoStringobject.  
  14.  
  15. StringrequestContentAsString=new 
  16.  
  17. String(requestContent).toUpperCase();  
  18.  
  19. //ConverttherequestContentAsStringtobytesagain.  
  20.  
  21. requestContent=requestContentAsString.getBytes();  
  22.  
  23. }  
  24.  
  25. else{  
  26.  
  27. //SendanHTMLmessagetoindicatethattheserver  
  28.  
  29. //isnotrespondingwithappropriatecontent.  
  30.  
  31. StringBuffersb=newStringBuffer();  
  32.  
  33. sb.append("<HTML>\n");  
  34.  
  35. sb.append("<HEAD>\n");  
  36.  
  37. sb.append("<TITLE>UPPERCASEHTMLTRANSCODERtitle>\n");  
  38.  
  39. sb.append("HEAD>\n");  
  40.  
  41. sb.append("<BODY>\n");  
  42.  
  43. sb.append("SERVERISNOTPUSHINGAPPROPRIATECONTENT\n");  
  44.  
  45. sb.append("BODY\n");  
  46.  
  47. sb.append("HTML>\n");  
  48.  
  49. requestContent=sb.toString().getBytes();  
  50.  
  51. }  
  52.  
  53. request.setContent(requestContent);  
  54.  
  55. //UpdatetheContent-Length  
  56.  
  57. HttpHeadercontentLengthHeader=  
  58.  
  59. request.getHeader(CONTENTLENGTH_HEADER_NAME);  
  60.  
  61. if(contentLengthHeader!=null){  
  62.  
  63. contentLengthHeader.setValue(""+requestContent.length);  
  64. }  
  65.  
  66. else{  
  67.  
  68. //TheserverdidnotsendtheContent-Length.  
  69.  
  70. //Noupdateisneeded.  
  71.  
  72. }  
  73.  
  74. //UpdatetheContent-Type.  
  75.  
  76. HttpHeadercontentTypeHeader=  
  77.  
  78. request.getHeader(CONTENTTYPE_HEADER_NAME);  
  79.  
  80. if(contentTypeHeader!=null){  
  81.  
  82. contentTypeHeader.setValue(OUTPUT_TYPE);  
  83. }  
  84.  
  85. else{  
  86.  
  87. //AddtheContentTypehereiftheserverdoesnotspecifyone.  
  88.  
  89. request.putHeader(newHttpHeader(  
  90.  
  91. CONTENTTYPE_HEADER_NAME,OUTPUT_TYPE));  
  92. }  
  93. }  
  94.  
  95. catch(Throwablet){  
  96.  
  97. thrownewHttpContentTranscoderException(t.toString());  
  98. }  
  99. }  
  100.  

#p#

 

定義服務器的響應處理

在MDS服務將它轉發(fā)到BlackBerry設備之前,transcodeServer(HttpResponse)的實現(xiàn)定義了包含來自于內(nèi)容服務器的內(nèi)容服務器響應的任何處理需求.如果響應不包含任何內(nèi)容,MDS服務將響應毫無變化的轉發(fā)給BlackBerry設備.

 

  1. publicvoidtranscodeServer(HttpResponseresponse)  
  2.  
  3. throwsHttpContentTranscoderException{  
  4.  
  5. try{  
  6.  
  7. //Retrievetheresponsecontent,whichinthiscaseisinHTML.  
  8.  
  9. byte[]responseresponseContent=response.getContent();  
  10.  
  11. if(responseContent!=null){  
  12.  
  13. //ConvertthecontenttoStringobject.  
  14.  
  15. StringresponseContentAsString=new 
  16.  
  17. String(responseContent).toUpperCase();  
  18.  
  19. //ConverttheresponseContentAsStringtobytesagain.  
  20.  
  21. responseContent=responseContentAsString.getBytes();  
  22.  
  23. }  
  24.  
  25. else{  
  26.  
  27. //Noresponseisreceivedfromtheserver.  
  28.  
  29. StringBuffersb=newStringBuffer();  
  30.  
  31. sb.append("<HTML>\n");  
  32.  
  33. sb.append("<HEAD>\n");  
  34.  
  35. sb.append("<TITLE>UPPERCASEHTMLTRANSCODERtitle>\n");  
  36.  
  37. sb.append("HEAD>\n");  
  38.  
  39. sb.append("<BODY>\n");  
  40.  
  41. sb.append("SERVERISNOTRESPONDING\n");  
  42.  
  43. sb.append("BODY\n");  
  44.  
  45. sb.append("HTML>\n");  
  46.  
  47. responseContent=sb.toString().getBytes();  
  48.  
  49. }  
  50.  
  51. response.setContent(responseContent);  
  52.  
  53. //UpdatetheContent-Length.  
  54.  
  55. HttpHeadercontentLengthHeader=  
  56.  
  57. response.getHeader(CONTENTLENGTH_HEADER_NAME);  
  58.  
  59. if(contentLengthHeader!=null){  
  60.  
  61. contentLengthHeader.setValue(""+responseContent.length);  
  62.  
  63. }  
  64.  
  65. else{  
  66.  
  67. //ServerdidnotsendContent-Lengthsonoupdateisrequired.  
  68.  
  69. }  
  70.  
  71. //UpdatetheContent-Type.  
  72.  
  73. HttpHeadercontentTypeHeader=  
  74.  
  75. response.getHeader(CONTENTTYPE_HEADER_NAME);  
  76.  
  77. if(contentTypeHeader!=null){  
  78.  
  79. contentTypeHeader.setValue(OUTPUT_TYPE);  
  80. }  
  81.  
  82. else{  
  83.  
  84. //AddtheContentTypehere.  
  85.  
  86. response.putHeader(new  
  87.  
  88. HttpHeader(CONTENTTYPE_HEADER_NAME,OUTPUT_TYPE));  
  89. }  
  90. }  
  91.  
  92. catch(Throwablet){  
  93.  
  94. thrownewHttpContentTranscoderException(t.toString());  
  95. }  
  96. }  
  97.  

 

編譯和安裝編碼轉化器

1.編譯編碼轉化器的類文件,在類路徑里包含bmds.jar.

2.為編譯編碼轉化器創(chuàng)建一個jar文件.

3.以下面的任一方式安裝編碼轉化器.jar文件

lBES:將一個編碼轉化器.jar文件加到JRE的lib\jar目錄下.此.jar文件必須可訪問JavaVM.

l模擬器:將一個編碼轉化器.jar文件加到BlackBerryJDE的MDS\classpath目錄下.

4.打開httpcontenttranscoderslist.property文件,此文件在BlackBerryJDE安裝目錄的MDS\Config子目錄下.

5.為了指定何時使用編碼轉化器,加入一個或多個入口,.例如,為了使用uppercasehtml編碼轉化器將HTML內(nèi)容轉化為大寫的HTML,加入下面的入口:

text/html->text/UPPERCASEHTML:uppercasehtml

6.保存屬性文件.

7.重啟MDS服務或BlackBerryMDS模擬器.
 

  1. BlackBerry開發(fā)中Windows+eclipse環(huán)境配置及Helloworld
  2. 九步實現(xiàn)BlackBerry開發(fā)程序發(fā)布應用到app world
  3. BlackBerry開發(fā)中七步實現(xiàn)創(chuàng)建app world賬號
  4. BlackBerry開發(fā)環(huán)境中javaloader使用詳解
  5. 黑莓開發(fā)中黑莓手機程序訪問網(wǎng)絡能走代理服務器的三種方式

 

 

責任編輯:佚名 來源: mobile.csdn.net
相關推薦

2010-05-22 16:57:09

BlackBerry開

2011-03-31 13:15:18

BlackBerry

2010-06-12 16:41:10

BlackBerry開

2011-06-07 09:10:41

BlackBerry 開發(fā)

2011-06-07 09:36:41

BlackBerry 應用程序

2010-06-08 16:47:18

BlackBerry開

2011-04-01 11:01:02

應用程序BlackBerryJava

2010-09-10 08:32:45

android marApp CatalogApp Store

2010-12-27 08:27:52

BlackBerry應用

2009-07-14 16:40:31

MyEclipse開發(fā)

2009-06-25 17:08:14

2011-04-13 15:09:06

JavaBlackBerry

2012-06-07 09:15:14

ibmdw

2009-08-14 17:27:30

C#Windows應用

2010-11-25 10:05:22

Visual StudSilverlightWCF

2013-02-21 14:14:40

開發(fā)Tizen

2013-02-21 14:15:41

開發(fā)Tizen

2012-02-08 15:06:31

ibmdw

2022-09-19 00:37:13

SaaS云計算開發(fā)

2011-04-15 14:22:20

圖片操作UIBlackBerry
點贊
收藏

51CTO技術棧公眾號

国产极品一区| 日韩一级片免费在线观看| 精品国产91乱码一区二区三区四区 | 调教+趴+乳夹+国产+精品| 久热国产精品视频一区二区三区| 国产偷人爽久久久久久老妇app | 成人午夜免费在线| 黄色在线视频观看网站| 激情综合色综合久久| 97精品国产97久久久久久| 亚洲第一视频区| 日本综合精品一区| 欧美日韩在线影院| 激情五月五月婷婷| 高清毛片在线看| 成人一区二区视频| 国产精品久久久av| 91精品国产高潮对白| 欧美一区二区三区高清视频| 亚洲第一精品电影| 亚洲欧美aaa| 鲁鲁在线中文| 亚洲靠逼com| 欧美成ee人免费视频| 国产高清在线免费| 麻豆精品国产91久久久久久| 26uuu亚洲伊人春色| 日韩一级片av| 91亚洲自偷观看高清| 亚洲欧美日韩天堂一区二区| 在线xxxxx| 国产在线不卡一区二区三区| 在线这里只有精品| 免费av观看网址| 直接在线观看的三级网址| 欧美激情中文不卡| 欧美日韩在线不卡一区| 免费观看黄色av| 国产剧情一区二区三区| 国产精品看片资源| 久久国产视频精品| 999亚洲国产精| 欧美精品激情在线观看| 中文字幕手机在线观看| 999国产精品| 最近2019中文字幕一页二页| 国产肥白大熟妇bbbb视频| 欧美电影完整版在线观看| 日韩精品自拍偷拍| 三大队在线观看| 日韩精品三级| 91精品婷婷国产综合久久| 97超碰成人在线| 国产成人77亚洲精品www| 欧美亚洲高清一区二区三区不卡| 黄在线观看网站| 成人av观看| 狠狠综合久久av一区二区小说| 天堂久久一区二区三区| www国产精品视频| 你懂得在线观看| 色喇叭免费久久综合| 一本一道久久a久久精品逆3p| 日韩乱码人妻无码中文字幕久久| 网曝91综合精品门事件在线 | 亚洲 国产 欧美 日韩| 99在线精品一区二区三区| 国产乱码精品一区二区三区中文 | 亚洲色图激情小说| 97国产精品久久| 97se亚洲国产综合自在线观| 色999久久久精品人人澡69| 中文字字幕在线中文| 日韩视频第二页| 精品成人在线观看| 日本一区二区三区高清不卡| 99av国产精品欲麻豆| 日韩欧美一区二区视频| 超碰在线超碰在线| 亚洲午夜免费| 亚洲精品中文字幕有码专区| 国精产品一区二区三区| 成人在线电影在线观看视频| 色多多国产成人永久免费网站 | 欧美精品制服第一页| 激情四射综合网| 三级网站在线免费观看| 欧美四级在线| 欧美午夜宅男影院在线观看| 尤蜜粉嫩av国产一区二区三区| 六九午夜精品视频| 欧美成人官网二区| 91中文字幕永久在线| 天天插综合网| 91av视频在线免费观看| 一级片在线免费播放| 国产精品123| 欧美高清视频一区| 老司机免费在线视频| 精品国产999| theporn国产精品| 露出调教综合另类| 少妇高潮久久久久久潘金莲| 国产午夜精品一区二区理论影院| 三级在线观看一区二区| 国产高清精品一区二区| 成人高清免费在线播放| 亚洲一级片在线观看| 日本成人黄色网| 大型av综合网站| 色偷偷亚洲男人天堂| 日韩三级视频在线播放| 国产综合色视频| 欧美高清视频一区二区三区在线观看| 精品欧美色视频网站在线观看| 色综合天天综合网天天看片| 精品国产乱码久久久久久1区二区| 亚洲资源网站| 国精产品一区一区三区有限在线| 在线亚洲欧美日韩| 91视频国产资源| 男女裸体影院高潮| 久久伊人国产| 国产亚洲xxx| 天天操天天爽天天干| 国产一区二区三区视频在线播放| 欧美日韩一区在线视频| 国产v日韩v欧美v| 日韩天堂在线观看| 人人干在线观看| 欧美日韩一级在线观看| 天堂一区二区在线| 久久精品国产理论片免费| 中文在线免费| 欧美日韩国产bt| 日本一区二区视频在线播放| 国产欧美一区二区三区国产幕精品| 成人午夜小视频| 天堂地址在线www| 91极品视觉盛宴| 免费观看av网站| 亚洲视频播放| 精品欧美一区二区三区久久久| 亚洲综合影视| 欧美一区2区视频在线观看| 国产7777777| 秋霞电影一区二区| 亚洲精品影院| 国产精品天堂蜜av在线播放 | 91精品国产综合久久男男| 国产二区视频在线观看| 一本大道久久a久久精品综合| 日韩片在线观看| 一区二区三区国产在线| 韩日午夜在线资源一区二区| 黄页在线观看免费| 精品对白一区国产伦| 日韩精品一区二区不卡| www.99精品| 欧美一级在线看| 国产a久久精品一区二区三区| 日韩av电影中文字幕| 久青青在线观看视频国产| 91福利视频久久久久| 成人在线观看免费高清| 老司机午夜精品| 老汉色影院首页| 四虎影视国产精品| 欧美日韩xxxxx| 黄色福利在线观看| 色婷婷av一区| 5566中文字幕| 懂色av中文一区二区三区| 2018国产在线| 国产探花一区| 91精品视频在线免费观看| 香蕉成人app免费看片| 亚洲电影免费观看高清完整版在线 | 8x拔播拔播x8国产精品| 欧美理论在线观看| 欧美视频在线播放| 欧洲猛交xxxx乱大交3| heyzo一本久久综合| 粉嫩虎白女毛片人体| 99精品在线观看| 国产精品美女xx| 日本在线精品| 欧美华人在线视频| 视频三区在线观看| 在线不卡免费av| 日本亚洲色大成网站www久久| 久久久99免费| 91亚洲精品久久久蜜桃借种| 亚洲另类自拍| 亚洲日本无吗高清不卡| 香蕉大人久久国产成人av| 日本在线观看天堂男亚洲| 免费av在线网站| 日韩av在线一区二区| 一级成人免费视频| 午夜私人影院久久久久| 成人性视频免费看| 91农村精品一区二区在线| 亚洲欧美手机在线| 奶水喷射视频一区| 潘金莲一级淫片aaaaa免费看| 天堂在线精品| 亚洲综合在线播放| 成人看片网站| 亚洲97在线观看| 动漫一区在线| 永久免费精品影视网站| 天天操天天射天天| 日韩网站在线看片你懂的| 性高潮视频在线观看| 五月婷婷色综合| 欧美日韩免费做爰视频| 国产精品高潮呻吟| 99久久精品免费视频| av激情亚洲男人天堂| 国产精品久久久久久久99| 日本系列欧美系列| 浮妇高潮喷白浆视频| 国产精品v日韩精品v欧美精品网站| 水蜜桃一区二区三区| 亚洲精品中文字幕99999| 国产精品久久国产三级国电话系列| 亚洲色图图片| 国产精品永久免费在线| 激情开心成人网| 97人人做人人爱| 天使と恶魔の榨精在线播放| 精品国产美女在线| 秋霞午夜在线观看| 中文字幕亚洲欧美一区二区三区 | 在线免费观看高清视频| 色婷婷久久一区二区三区麻豆| 欧美成人精品欧美一级乱黄| 一区二区三区**美女毛片| 欧美一区二区三区爽爽爽| 国产精品久久久久久一区二区三区 | 色先锋资源久久综合5566| 国产在线观看网站| 亚洲区中文字幕| 黄色小视频在线观看| 亚洲男人的天堂网站| 日本在线视频1区| 日韩精品视频免费| 欧美男男同志| 亚洲亚裔videos黑人hd| 国产在线资源| 中文综合在线观看| 免费在线看a| 久久视频国产精品免费视频在线| 日本不卡视频| 欧美老女人性视频| 男人添女人下部高潮视频在线观看| 久久99精品久久久久久噜噜| 日本在线视频中文有码| 久久久亚洲成人| 蜜桃在线视频| 国产精品成人一区二区三区吃奶| 欧美黄色三级| 国产在线视频91| 999久久久精品一区二区| 国产精品一区二区三区免费| 日韩欧美在线精品| 日韩国产欧美精品| 亚洲精品二区三区| 欧美狂野激情性xxxx在线观| 国产精品久久久亚洲一区| 日本精品www| 理论片日本一区| jjzz黄色片| 久久久午夜精品| 国产精品成人在线视频| 亚洲桃色在线一区| 国产乡下妇女做爰| 日本乱码高清不卡字幕| 97成人在线观看| 亚洲第一二三四五区| 国产在线超碰| 久久国产精品久久久久久久久久 | 国产在线观看免费网站| 欧美精品手机在线| 久久爱91午夜羞羞| 91在线无精精品一区二区| 秋霞影视一区二区三区| 伊人久久大香线蕉精品| 亚洲福利免费| 99re精彩视频| 成人av网站免费观看| 先锋影音av在线| 亚洲图片欧美视频| 亚洲一卡二卡在线| 日韩精品视频在线观看免费| 黄色网址在线免费观看| 欧美又大粗又爽又黄大片视频| 四虎永久精品在线| 欧美午夜免费| 欧美在线影院| 99视频在线视频| 91欧美一区二区| 欧美日韩一级在线观看| 欧美性感一区二区三区| 无码国产伦一区二区三区视频 | 精品国内二区三区| 98在线视频| 欧美有码在线观看视频| 亚洲五码在线| 一区二区三区四区视频在线| 亚洲尤物影院| 少妇熟女视频一区二区三区| 国产精品女上位| 天天操夜夜操视频| 亚洲成色www8888| 怡红院在线播放| 国产日韩欧美黄色| 国产日产精品_国产精品毛片| 欧美精品一区二区三区三州| 狠狠久久亚洲欧美| 嘿嘿视频在线观看| 日本久久电影网| 亚洲人成色777777精品音频| 久久久久久一区二区三区| 激情综合五月| 亚洲一卡二卡| 日韩av成人高清| 这里只有久久精品| 欧美性猛交xxxx| 性xxxx视频| 91黑丝在线观看| 久久成人福利| 国产妇女馒头高清泬20p多| 国产999精品久久| 欧美精品videos极品| 日韩欧美在线综合网| 爆操欧美美女| 亚洲xxxx视频| 欧美另类视频| 久久久久亚洲av成人网人人软件| 亚洲欧美日韩国产成人精品影院| 一二区在线观看| 久久精品中文字幕一区| 96sao精品免费视频观看| 中文字幕av日韩精品| 麻豆91在线播放免费| 特黄一区二区三区| 欧美丰满少妇xxxxx高潮对白| 888av在线| 亚洲伊人成综合成人网| 欧美激情一区| yy1111111| 欧美视频裸体精品| 国产免费av高清在线| 国产精品看片资源| 久久国产中文字幕| 亚洲图片 自拍偷拍| 亚洲久草在线视频| 黄色成人一级片| 日本成熟性欧美| 成人黄色av| 国产精品嫩草影视| 午夜精品在线视频一区| 午夜视频免费在线| 国产精品igao视频| 亚洲电影在线一区二区三区| 国产乱国产乱老熟300部视频| 亚洲国产精品天堂| 你懂的视频在线| 国产在线高清精品| 国产专区一区| 爱爱的免费视频| 精品视频一区二区不卡| a视频在线播放| 久久av一区二区| 免费不卡在线视频| 18岁成人毛片| 亚洲女成人图区| 999精品视频在线观看| 亚洲国产成人精品无码区99| 国产亚洲成av人在线观看导航| 一级黄色片在线看| 99国产欧美久久久精品| 鬼打鬼之黄金道士1992林正英| 高清日韩欧美| 成熟老妇女视频| 日韩一区有码在线| 嫩草影院一区二区| 国产精品久久久久久久久借妻| 在线中文字幕亚洲| 国产精品九九九九九| 91精品在线观看入口| 涩涩网在线视频| 亚洲综合激情五月| 91免费国产视频网站| 国产精品特级毛片一区二区三区| 久久久久久久久久av| 日韩欧美中字| jizz日本免费|