資源描述:
《android網絡編程_李大鵬》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、Android--------網絡編程Google以網絡搜索引擎起家的,在網絡通信方面也非常優(yōu)秀,我們可以很輕松地使用Android自帶的瀏覽器來訪問網頁。Android基于Linux內核,它包含一組優(yōu)秀的聯(lián)網功能。目前,Android平臺有3種網絡接口可以使用,它們分別是:java.net.*(標準Java接口),org.apache(Apache接口),android.net.*(Android網絡接口)。標準java接口Java.net.*(標準java接口)提供與聯(lián)網有關的類,包括流和數(shù)據(jù)包套接字,
2、Internet協(xié)議,常見HTTP協(xié)議處理。比如:創(chuàng)建URL以及URLConnection/HttpURLConnection對象,設置連接參數(shù),連接到服務器,向服務器謝數(shù)據(jù),從服務器讀取數(shù)據(jù)等通信。源碼:try{//創(chuàng)建URL對象URLurl=newURL("http://www.baidu.com/");//創(chuàng)建URL連接URLConnectionconnection=url.openConnection();//對于HTTP連接可以直接轉換成HttpURLConnection,//這樣就可以使用一些H
3、TTP連接特定的方法,如setRequestMethod()等//HttpURLConnectionconnection//=(HttpURLConnection)url.openConnection(Proxy_yours);//設置參數(shù)connection.setConnectTimeout(10000);//連接服務器connection.connect();//取得數(shù)據(jù)InputStreamis=connection.getInputStream();//處理數(shù)據(jù)…………………}catch(IOEx
4、ceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}每一次HttpURLConnection連接的狀態(tài),可以用HttpURLConnection.getResponseCode取得目前的網絡連接的服務器應答代碼,或以HttpURLConnection.getResponseMessage取得返回的信息。常出現(xiàn)的代碼與信息的對應如下:ResponseCodeResponseMessage說明200OK成功401Unauthorized未授權
5、500InternalServerError服務器內部錯誤404NotFound找不到該網頁也可以運用HttpURLConnection類中的getInputStream方法,返回InputStream,可以將InputStream對象,變成Bitmap,顯示到畫面上。Apache接口HTTP協(xié)議可能是現(xiàn)在Internet上使用最多,最重要的通信協(xié)議了,越來越多的Java應用程序通過HTTP協(xié)議來訪問網絡資源。Android平臺引入了ApacheHttpClient的同時還提供了對它的一些封裝和擴展,例如設
6、置缺省的HTTP超時和緩存大小等。HttpClient是ApacheJakartaCommon下的子項目,可以用來提供高效的、最新的、功能豐富的支持HTTP協(xié)議的客戶端編程工具包,并且它支持HTTP協(xié)議最新的版本和建議。Android平臺用的版本是HttpClient4.0。對于HttpClient類,可以使用HttpPost和HttpGet類以及HttpResponse來進行網絡連接。源碼:第1種:post方式HttpPosthttpRequest=newHttpPost(uriAPI);try{//發(fā)出
7、HTTPrequesthttpRequest.setEntity(newUrlEncodedFormEntity(params,HTTP.UTF_8));/*取得?HTTPresponse*/HttpResponsehttpResponse=newDefaultHttpClient().execute(httpRequest);/*若狀態(tài)碼200ok*/if(httpResponse.getStatusLine().getStatusCode()==200){/*取出應答字符串*/StringstrResu
8、lt=EntityUtils.toString(httpResponse.getEntity());mTextView1.setText(strResult);}else{mTextView1.setText("ErrorResponse:"+httpResponse.getStatusLine().toString());}}catch(ClientProtocolExceptione){mTextView1.