亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

探索J2ME:用GCF通信

2019-11-18 12:45:58
字體:
來源:轉載
供稿:網友

  只有你實現移動設備與非移動設備互相通信的功能后,你設計的移動設備應用程序才可以稱的上是真正有用的。手持PC如Palm擁有同步功能,使得它們可以實現上述功能,但是其它設備,如java嵌入式電話,該如何實現該功能呢?J2ME的MIDP在javax.microedition.io程序包中提供了一整套類,統稱為通用連接構架(Generic Connection Framework ,GCF)。GCF使得與其它設備的可編程傳輸(PRogrammatically transferring)數據變得非常輕易。
  與世界相連
  
  GCF是建立在用連接類來治理通信的概念基礎上的,每個類用來治理具體某種通信方法。抽象Connection(通信)類(實際上,它只有一個已定義的方法,所以它確實很抽象)是所有連接連接類的基類,它可以依次實現五個接口類中的一種來定義他們的功能。這種設計的意圖就是使得GCF變得通用而且易于擴展,而且使得編程者用起來盡可能的簡單。
  
  MIDP 1.0唯一支持的連接類型就是HTTP了,HTTP協議用于Web頁面服務。對HTTP協議的支持是在HttpConnection類中實現的,我將在本文集中闡述這個類。你也許覺得內容限制在HTTP上不太好,實際上并不是這樣的。你的移動設備應用程序最終將可以和任意一種Web服務器通信,并且HttpConnection類會很好的把各種治理通信的行為抽象出來:你無需擔心端口或者其它亂七八糟的東西。你只需要知道三種HTTP請求,并把它們作為你的應用程序的連接媒介。
  
  HTTP簡述
  詳盡、透徹的討論HTTP結構將會超出了本文的范圍,可以這么說HTTP客戶端可以向服務器端發出三種不同的請求中的某一種:GET、POST或者HEAD。不同請求的意義各不相同:
  
   GET請求是用來請求數據的,如Web頁面或者多媒體文件。你也可以通過URL用GET請求向服務器發送數據,不過用這種方式只可以發送少量的數據,很顯然,嵌入到URL的數據是清楚易見的(plainly visible)。
   POST請求可以通過單獨的數據流來向URL發送數據。提交Web表單(form)會使你的瀏覽器向服務器發送POST請求。然后,Web服務器把檢索到數據發送給頁面或者URL指定的CGI程序中。在POST請求中你可以發送比GET請求更多的數據,不過它并不是真正安全可靠的,至少你的數據不是清楚的(in plain sight)。
   最后要說說HEAD請求,它用來在服務器上檢索元數據(metadata)。服務器的回應并不包含實際請求的數據,包含的只是關于請求的信息。
  
  當收到客戶端發出的請求后,服務器發出回應?;貞畔⒖煞譃樾畔㈩^和正文兩個部分,它們包含實際請求的數據。信息頭包括用來表示請求是否成功的狀態字。狀態字200表示請求成功,狀態字400或者400以上表示請求失敗。
  使用HttpConnection類
  現在,我們完全基于HTTP來看看如何用HttpConnection類來請求遠端的服務器并獲取數據。你可以用靜態Connector類打開HttpConnection,它會為你維護對象。打開連接后,你可以通過指定HttpConnection.GET、 HttpConnection.POST,、或者HttpConnection.HEAD來設置你希望使用的客戶請求類型:
  
  
  
  http = (HttpConnection) Connector.open(“http://builder.com.com”);
   http.setRequestMethod(HttpConnection.GET);
  
  你指定的請求會自動發送到你在Connector.open中設定的URL。然后你可以通過HttpConnection類中的getResponseCode方法來檢測請求是否成功
  
  
  
  if (http.getResponseCode() == HttpConnection.HTTP_OK){
   //成功!
  } else {
   //失敗
   }
  實際上,一旦你建立連接,發送和接受數據就是很簡單的一件事了,你只需用HttpConnection類的openInputStream和openOutputStream方法打開適當的流對象就可以了。
  
  接收數據
  讓我們看一個具體的例子。在程序清單A中,我已經寫好了用以建立一個名為CGFMidlet的MIDlet例子的代碼,它演示了通過HttpConnection類,如何讀取保存在Web服務器中的小文本文件內容的過程。在運行這個例子前,你有可能需要修改URL(http://你的Web服務器/你的文件名.txt)為合適的內容。
  
  讓我們看看getHTTPFile方法,它是用來處理文件檢索的。你就會發現HttpConnection類為該文件發出GET請求。當檢查回應狀態字、確保沒有問題后,我用InputStream方法讀取文件的內容并把它顯示在MIDlet的主表單中:
  
  
  
  //打開讀取結果的輸入流
   stream = http.openInputStream();
   byte data[] = new byte[(int) http.getLength()];
   stream.read(data);
  //把結果顯示在主表單的輸出字段上
   output.setString(new String(data));
  
  
  發送數據
  你也可以用GET請求來向服務器發送數據,但是這個方法有個缺點(只能向服務器發送少量數據),我在前面已經暗示了這一點。假如發送數據的量很大,你最好用POST請求。你可以在程序清單B中看到ServerConnetion類是如何做到這一點的。該程序清單是我在本系列文章中所用到的例子程序EXPensesApp(你可以在這兒下載源代碼)可以把開銷發送到服務器保存而寫的代碼。除了我現在用HttpConnection.POST做為請求類型以及設置一種非凡的信息頭來幫助服務器處理請求中的數據外,其它的東西都大致一樣:
  
  http.setRequestMethod(HttpConnection.POST);
   //必須設置內容類型t
   http.setRequestProperty("Content-Type",_
   "application/x-www-form-urlencoded");
   //為打開的連接打開輸出流
   OutputStream ostream = http.openOutputStream()
  然后,我循環訪問ExpenseInfo數組,并把數組中的各個對象聯為一個字符串,用OutputStream方法把字符串所保存的數據發送到服務器:
  
  
  for (int i=0; i   String s = ("ExpenseDate=" + expensesRecords[i].getDate().toString()+
   "&ExpenseCategory=" + expensesRecords[i].getCategory() +
   "&ExpenseAmount=" + String.valueOf(expensesRecords[i].getDollars()) +
   "." + String.valueOf(expensesRecords[i].getCents()) +
   "&ExpenseDescr  
  
  在服務器端,你需要類似于CGI類型的處理過程(例如
asp、jsp或者Servlet)來接受數據。字符串中的每一對“標識符——數值”將按照遞交表單的控制顯示在接受頁上,所以你的接受頁訪問這些數據的方式和訪問表單數據相同。
  
  盡管HTTP并不是傳輸大量數據的理想工具,它的靈活性還是足以用來完成本文中的工作,并且GCF使HTTP的用法非凡簡單。很幸運,GCF以后的版本將為開發者提供除HTTP外更多的選擇。
  
  
  本文相關連接請點這里

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品18久久久久久首页狼| 在线视频日本亚洲性| 久久夜色撩人精品| 国产69精品久久久久9| 欧美精品在线免费| 国产精品女人网站| 国产精品久久久久久久久男| 5252色成人免费视频| 国产精品久久久久久久久久尿| 国产v综合ⅴ日韩v欧美大片| 久久久久久久久国产| 国产91在线播放九色快色| 欧美性猛交丰臀xxxxx网站| 亚洲一区二区三区久久| 日韩成人激情视频| 亚洲高清在线观看| 久久天堂av综合合色| 日韩在线中文字| 亚洲国产精品久久91精品| 久久久成人精品| 久久久久久久色| 亚洲人成电影在线观看天堂色| 国产一区二区黑人欧美xxxx| 亚洲成人教育av| 日本亚洲欧洲色α| 国产欧美精品久久久| 国产精品白丝av嫩草影院| 欧美成人激情视频免费观看| 久久久精品视频在线观看| 国产精品福利在线观看网址| 丝袜亚洲另类欧美重口| 2019亚洲日韩新视频| 另类美女黄大片| 国产一区二区美女视频| 精品夜色国产国偷在线| 色悠悠久久88| 欧美一区二三区| 色噜噜狠狠狠综合曰曰曰| 成年无码av片在线| 91高潮在线观看| 91精品啪在线观看麻豆免费| 日韩欧美在线视频观看| 69国产精品成人在线播放| 中文字幕精品在线| 欧美性猛交xxxx富婆弯腰| 亚洲图片在线综合| 一区二区三区回区在观看免费视频| 国产美女精彩久久| 狠狠爱在线视频一区| 日本在线观看天堂男亚洲| 亚洲丝袜av一区| 4438全国成人免费| 国产精品www| 国产成人鲁鲁免费视频a| 欧美日韩国产综合视频在线观看中文| 亚洲国产精品va在线看黑人| 欧洲s码亚洲m码精品一区| 欧美体内谢she精2性欧美| 国产精品99久久久久久久久久久久| 久久久av网站| zzjj国产精品一区二区| 国产日韩在线观看av| 国产精品专区h在线观看| 亚洲精品一区二区在线| 中文字幕免费精品一区高清| 尤物九九久久国产精品的特点| 自拍偷拍亚洲在线| 九九热精品视频在线播放| 欧美精品在线视频观看| 韩日欧美一区二区| 日韩美女视频免费在线观看| 国产97在线亚洲| 亚洲欧美日韩中文视频| 欧美韩国理论所午夜片917电影| 亚洲精品欧美日韩| 成人精品一区二区三区| 色偷偷偷亚洲综合网另类| 亚洲激情视频在线观看| 国产精品网站视频| 日韩欧美中文第一页| 92国产精品视频| 亚洲精品日韩久久久| 欧美亚洲国产视频小说| 欧美性极品xxxx娇小| 亚洲男人的天堂在线播放| 国产ts一区二区| 久久激情五月丁香伊人| 久久精品91久久久久久再现| 尤物精品国产第一福利三区| 国产精品福利无圣光在线一区| 亚洲国产婷婷香蕉久久久久久| 欧美性猛交xxxx偷拍洗澡| 91久久久久久久久久久久久| 亚洲欧美日韩精品| 国产精品国产三级国产专播精品人| 国产精品丝袜高跟| 国产精品日日做人人爱| 国产成人精品在线视频| 亚洲无亚洲人成网站77777| 成人h片在线播放免费网站| 亚洲福利在线看| 国产视频亚洲视频| 亚洲va欧美va在线观看| 亚洲图片欧洲图片av| 久久精品国产成人精品| 精品久久久久久久久中文字幕| 欧美性猛交xxxx| 国产精品女人网站| 国产日韩欧美夫妻视频在线观看| 亚洲欧美精品suv| 成人性生交大片免费看视频直播| 欧美性色xo影院| 国内精品一区二区三区| 欧美亚洲第一页| 亚洲精品在线观看www| 亚洲欧美日韩一区在线| 福利一区视频在线观看| 国产日本欧美一区| 成人久久久久久| 精品国产成人av| 韩日欧美一区二区| 亚洲精品91美女久久久久久久| 国产精品视频xxx| 亚洲欧美日韩精品久久亚洲区| 亚洲久久久久久久久久久| 91精品综合视频| 国内精品国产三级国产在线专| 在线日韩欧美视频| 国产欧美久久一区二区| 色先锋资源久久综合5566| 亚洲国产天堂网精品网站| 成人欧美一区二区三区在线| 欧美在线视频播放| 亚洲国产精品久久久久秋霞不卡| 国产精品爱啪在线线免费观看| 色青青草原桃花久久综合| 国产97人人超碰caoprom| 亚洲一级免费视频| 性色av一区二区三区| 国产精品免费网站| 精品亚洲va在线va天堂资源站| 国产视频一区在线| 亚洲精品v欧美精品v日韩精品| 日韩中文字幕av| 奇米影视亚洲狠狠色| 亚洲精品成人网| 欧美尺度大的性做爰视频| 91社区国产高清| 疯狂做受xxxx高潮欧美日本| 欧美精品久久久久久久免费观看| 日韩一区视频在线| 国产精品男人的天堂| 欧美在线视频在线播放完整版免费观看| 亚州成人av在线| 中文字幕不卡在线视频极品| 中国china体内裑精亚洲片| 91深夜福利视频| 91精品国产色综合| 亚洲人成网在线播放| 亚洲人午夜色婷婷| 国产主播精品在线| 亚洲视频在线播放| 亚洲精品91美女久久久久久久| 欧美乱妇高清无乱码|