android網(wǎng)絡(luò)應(yīng)用第9講訪問internet上的數(shù)據(jù)_第1頁
android網(wǎng)絡(luò)應(yīng)用第9講訪問internet上的數(shù)據(jù)_第2頁
android網(wǎng)絡(luò)應(yīng)用第9講訪問internet上的數(shù)據(jù)_第3頁
android網(wǎng)絡(luò)應(yīng)用第9講訪問internet上的數(shù)據(jù)_第4頁
android網(wǎng)絡(luò)應(yīng)用第9講訪問internet上的數(shù)據(jù)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Android課程講義智能手機開發(fā)第九講訪問Internet上的數(shù)據(jù)本講內(nèi)容訪問網(wǎng)絡(luò)資源提交據(jù)數(shù)到服務(wù)器Xml發(fā)送與webservice調(diào)用訪問網(wǎng)頁資源訪問網(wǎng)絡(luò)需要得到訪問權(quán)限獲取URL( 網(wǎng)絡(luò)地址)對象URL url=new URL(網(wǎng)址);獲得連接通道HttpURLConnection conn=(HttpURLConnection)url.openConnection();設(shè)置連接超時時間conn.setConnectTimeout(5*1000);設(shè)置請求方式conn.setRequestMethod(“GET);如果狀態(tài)碼不是200,拋出異常if (conn.getResponseC

2、ode() != 200) throw new RuntimeException(請求url失敗);如果網(wǎng)響應(yīng)成功,則取得從網(wǎng)絡(luò)返回的輸入流,并使用io操作讀取數(shù)據(jù)在android環(huán)境下顯示圖片需要ImageView控件 顯示圖片需要得到根據(jù)得到的字節(jié)數(shù)組生成位圖/生成位圖Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);/顯示圖片img.setImageBitmap(bitmap);提交數(shù)據(jù)到服務(wù)器可以使用http協(xié)議把android應(yīng)用里的數(shù)據(jù)提交給web服務(wù)器,提交數(shù)據(jù)的方式與web提交請求的方式一樣,

3、有兩種,分為get和post使用get方式提交數(shù)據(jù)回想以前使用的get方式提交數(shù)據(jù)的url 因此要重構(gòu)url(拼裝字符串),提交的數(shù)據(jù)可以使用map存儲,提交可以封成單獨的方法使用步驟方法聲明public boolean sendGetRequest(String url,Map params)url:地址Params:提交的參數(shù)提交成功返回true,提交失敗返回false方法實現(xiàn)StringBuilder sb=new StringBuilder(url);/拼裝字符串sb.append(?);for(Map.Entry param:params.entrySet()sb.append(pa

4、ram.getKey()+=+param.getValue();sb.append(&);sb.deleteCharAt(sb.length()-1);URL sendUrl=new URL(sb.toString();HttpURLConnection conn=(HttpURLConnection)sendUrl.openConnection();/設(shè)置提交方式為GET,GET必須是大寫形式conn.setRequestMethod(GET);conn.setConnectTimeout(5*1000);/狀態(tài)碼200表示提交成功,否則表示失敗if(conn.getResponseCode

5、()!=200)return false;elsereturn true;如果提交中文,可能會出現(xiàn)亂碼處理中文亂碼URLEncoder.encode(param.getValue(), “UTF-8”)/android應(yīng)用編碼更改tomcat編碼和request請求編碼使用post提交數(shù)據(jù)至少要設(shè)置Content-Typeapplication/x-www-form-urlencoded/類容類型Content-Length30/實體數(shù)據(jù)長度使用post提交數(shù)據(jù)的步驟拼裝要提交的數(shù)據(jù)StringBuilder sb=new StringBuilder();for(Map.Entry param

6、:params.entrySet()sb.append(param.getKey()+=+URLEncoder.encode(param.getValue(), UTF-8);sb.append(&);sb.deleteCharAt(sb.length()-1);設(shè)置提交方式為post,綠色是與get的區(qū)別URL sendUrl=new URL(url);HttpURLConnection conn=(HttpURLConnection)sendUrl.openConnection();/設(shè)置提交方式為POST,POST必須是大寫形式conn.setRequestMethod(POST);co

7、nn.setConnectTimeout(5*1000);/允許對外輸出數(shù)據(jù)conn.setDoOutput(true);設(shè)置請求屬性/設(shè)置內(nèi)容類型conn.setRequestProperty(Content-Type,application/x-www-form-urlencoded);/設(shè)置實體數(shù)據(jù)長度conn.setRequestProperty(Content-Length,String.valueOf(sb.toString().getBytes().length);提交數(shù)據(jù)/構(gòu)造輸出流OutputStream output=conn.getOutputStream();/寫入數(shù)據(jù)

8、output.write(sb.toString().getBytes();/刷新緩存output.flush();output.close();/根據(jù)狀態(tài)碼查看發(fā)送是否成功if(conn.getResponseCode()=200)return true;else return false;測試運行查看提供web服務(wù)的網(wǎng)站看需要什么數(shù)據(jù),響應(yīng)什么數(shù)據(jù)Android調(diào)用webService編寫soap協(xié)議需要的xml文件,參數(shù)替換成自己的參數(shù)發(fā)送xml數(shù)據(jù)到服務(wù)器得到服務(wù)返回的數(shù)據(jù)解析返回的xml得到自己需要的數(shù)據(jù)創(chuàng)建要發(fā)送的xml,用特定符號表示傳參,如$,不能提供參數(shù)的地方則不輸數(shù)據(jù) $p

9、honeNo 因為要處理的事情太多,因此編寫工具類PhoneService,提供以下方法根據(jù)輸入流獲取數(shù)據(jù)的方法替換xml中參數(shù)字符串的方法得到替換過的xml字符串的方法解析xml文件的方法提交xml文件的方法根據(jù)輸入流獲取數(shù)據(jù)的方法public byte getFromInputStream(InputStream input) throws IOExceptionByteArrayOutputStream outStream = new ByteArrayOutputStream();int len=-1;byte bb=new byte1024;while(len=input.read(

10、bb)!=-1)outStream.write(bb,0,len);byte data=outStream.toByteArray();outStream.close();input.close();return data;替換xml中參數(shù)字符串的方法public String replace(String xml,Map param)String result=xml;if(param!=null & !param.isEmpty()for(Map.Entry p:param.entrySet()String name=$+p.getKey();/使用正則替換Pattern pile(nam

11、e);Matcher match=pattern.matcher(result);if(match.find()result=match.replaceAll(p.getValue();return result;得到替換過的xml字符串的方法public String readSoapFromFile(InputStream input,String phoneN0) throws IOExceptionbyte data=getFromInputStream(input);String soapXml=new String(data);Map map=new HashMap();map.p

12、ut(phoneNo, phoneN0);return replace(soapXml,map);解析xml的方法private static String parseResponseXML(InputStream inStream) throws ExceptionXmlPullParser parser = Xml.newPullParser();parser.setInput(inStream, UTF-8);int eventType = parser.getEventType();while(eventType!=XmlPullParser.END_DOCUMENT)switch (eventType) case XmlPullParser.START_TAG:String name = parser.getName();if(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論