成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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 應用程序

2011-04-01 11:01:02

應用程序BlackBerryJava

2010-06-08 16:47:18

BlackBerry開

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ā)

2011-04-13 15:09:06

JavaBlackBerry

2009-06-25 17:08:14

2012-06-07 09:15:14

ibmdw

2011-04-15 14:22:20

圖片操作UIBlackBerry

2009-08-14 17:27:30

C#Windows應用

2013-02-21 14:14:40

開發(fā)Tizen

2013-02-21 14:15:41

開發(fā)Tizen

2010-11-25 10:05:22

Visual StudSilverlightWCF

2012-02-08 15:06:31

ibmdw

2022-09-19 00:37:13

SaaS云計算開發(fā)
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美亚洲一级 | 国产线视频精品免费观看视频 | 国产真实精品久久二三区 | 久久99精品国产 | 国产成人免费视频网站高清观看视频 | 亚洲免费在线观看 | 青青久草| 国内精品伊人久久久久网站 | 亚洲乱码一区二区三区在线观看 | 99成人| 中文天堂在线观看 | 黄色一级免费 | 拍拍无遮挡人做人爱视频免费观看 | av一区二区三区四区 | 狠狠爱免费视频 | 精品国产一区探花在线观看 | 国产欧美一区二区三区在线看 | 神马久久久久久久久久 | av在线免费观看网址 | 亚洲欧洲在线看 | 日韩久久精品 | 高清视频一区二区三区 | 国产精品日韩高清伦字幕搜索 | 国产精品亚洲综合 | 欧美1区2区 | 91大神xh98xh系列全部 | 色桃网 | 在线观看中文字幕视频 | www狠狠干| 精品乱人伦一区二区三区 | 日韩精品一区二区三区视频播放 | 欧美日韩国产精品一区二区 | 四虎影院在线观看免费视频 | 91视频久久| 9999精品视频 | 亚洲在线日韩 | 日本一区二区三区四区 | 国产精品日韩欧美一区二区三区 | 一区二区三区精品视频 | 亚洲视频欧美视频 | 亚洲日本三级 |