AndroidHttps服務(wù)器端和客戶端簡(jiǎn)單實(shí)例教學(xué)文稿_第1頁(yè)
AndroidHttps服務(wù)器端和客戶端簡(jiǎn)單實(shí)例教學(xué)文稿_第2頁(yè)
AndroidHttps服務(wù)器端和客戶端簡(jiǎn)單實(shí)例教學(xué)文稿_第3頁(yè)
AndroidHttps服務(wù)器端和客戶端簡(jiǎn)單實(shí)例教學(xué)文稿_第4頁(yè)
AndroidHttps服務(wù)器端和客戶端簡(jiǎn)單實(shí)例教學(xué)文稿_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Good is good, but better carries it.精益求精,善益求善。AndroidHttps服務(wù)器端和客戶端簡(jiǎn)單實(shí)例AndroidHttps服務(wù)器端和客戶端簡(jiǎn)單實(shí)例工具介紹Eclipse3.7Tomcat6.0.18(免安裝版)Android2.1開(kāi)發(fā)環(huán)境(在Eclipse中配置好)前提條件JDK環(huán)境要使用我們自己安裝的,筆者JDK安裝目錄為D:Javajdk1.6.0_22,在Eclipse的Window-preference-installedJREs中,只選用我們自己安裝的JRE,如圖所示:在Eclipse與Tomcat整合的時(shí)候,也需要選擇此運(yùn)行環(huán)境:一搭建服務(wù)

2、器端1.在Eclipse中新建DynamicWebProject,取名為HttpsServer:2.index.jsp內(nèi)容如下:basehref=name+ageJSPPagename:age:name:age:這里其實(shí)是復(fù)用了之前Http調(diào)研的代碼,我們關(guān)心的是我們手機(jī)端能不能訪問(wèn)該服務(wù)器端,還涉及到傳遞數(shù)據(jù),具體數(shù)據(jù)顯示在TestService表示。3.TestService代碼如下:packagecom.veer;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException

3、;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassTestServiceextendsHttpServletprivatestaticfinallongserialVersionUID=1L;protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOE

4、xceptionStringname=req.getParameter(name);Stringage=req.getParameter(age);resp.setContentType(text/html);PrintWriterout=resp.getWriter();out.println(name&age/head);out.println(name:+name+);out.println(age:+age+);System.out.println(name=+name);System.out.println(age=+age);out.flush();protectedvoiddoP

5、ost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOExceptionreq.setCharacterEncoding(utf-8);Stringname=req.getParameter(name);Stringage=req.getParameter(age);resp.setContentType(text/html);resp.setCharacterEncoding(utf-8);/設(shè)置返回給客戶端的文本格式,可解決文字編碼不統(tǒng)一的問(wèn)題PrintWriterout=resp.getWri

6、ter();out.println(name&age/head);out.println(name:+name+);out.println(age:+age+);System.out.println(name=+name);System.out.println(age=+age);out.flush();4.修改web.xml文件,在倒數(shù)第二行加入:ThisisthedescriptionofmyJ2EEcomponentThisisthedisplaynameofmyJ2EEcomponentTestServicecom.veer.TestServiceTestService/TestSer

7、vice至此,未加密鑰的服務(wù)器端就已經(jīng)搭建好。二配置密鑰2.1在D盤(pán)建立文件夾cer,再在里面建立文件夾tomcat;2.2進(jìn)入cmd,依次鍵入cd、d:、cdcer、cdtomcat,進(jìn)入到D:certomcat目錄下面;2.3生成服務(wù)器端密鑰鍵入D:certomcatkeytool-genkey-aliastomcat-keyalgRSA-keystoreserver.keystore-validity36000解釋:keytool是jdk下的命令行工具。alias隨意指定,表示別名。keyalg表示加密算法為RSA,輸出文件為server.keystore這里面需要輸入密碼(我們輸入12

8、3456),另外注意“您的名字與姓氏是什么?”,這一項(xiàng)要輸入tomcat所在主機(jī)的IP或域名,客戶端訪問(wèn)tomcat時(shí)會(huì)涉及到這個(gè)地址,筆者局域網(wǎng)的IP是13,所以我們輸入該IP。此時(shí)在D:certomcat里面就會(huì)生成一個(gè)server.keystore文件,不要關(guān)閉cmd,還有操作要進(jìn)行;2.4用server.keystore生成server.cer鍵入:D:certomcatkeytool-export-aliastomcat-fileserver.cer-keystoreserver.keystore-storepass123456此時(shí)在D:certomcat里面就會(huì)生成一個(gè)server

9、.cer文件。解釋:這個(gè)是瀏覽器可以識(shí)別的證書(shū),用于導(dǎo)入瀏覽器。不要關(guān)閉cmd,還有操作要進(jìn)行。2.5這個(gè)時(shí)候tomcat就可以啟動(dòng)ssl了,以tomcat6.0為例,在server.xml中拷入(或是更改)如下片段:其中clientAuth=false,表示單向驗(yàn)證,為true的話則是雙向認(rèn)證。這時(shí)啟動(dòng)tomcat,打開(kāi)IE,輸入13:8443/會(huì)提示沒(méi)有證書(shū),但能點(diǎn)進(jìn)去。我們可以雙擊剛才生成的server.cer,把它導(dǎo)入“受信任的根證書(shū)頒發(fā)機(jī)構(gòu)”,就能看到瀏覽器上的小鎖了。三特別說(shuō)明我們需要下載bcprov-jdk15-135.jar及sunjce_provider.jar(可能已經(jīng)存在

10、),放入D:Javajdk1.6.0_22jrelibext下面。同時(shí)要修改D:Javajdk1.6.0_22jjrelibsecurityjava.security文件,找到vider.1=vider.Sun這行,這里有好幾行,在最后一行加上vider.10=vider.BouncyCastleProvider,筆者本來(lái)有9號(hào),所以新一行的序號(hào)為10。在cmd中繼續(xù)鍵入:D:certomcatkeytool-import-aliastomcat-fileserver.cer-keystoreserver_trust.keystore-storepass123456-storetypeBKS-

11、providernameBC這時(shí)候在D:certomcat里面就會(huì)生成一個(gè)server_trust.keystore文件。解釋:將在客戶端用到這個(gè)信任的密鑰。四搭建客戶端按照正常的步驟,我們建立一個(gè)AndroidProject,需要注意的是新建立一個(gè)文件夾res/raw,將server_trust.keystore拷貝至其中,在AndroidMainfest.xml中加入。如下圖所示:HttpsClientActivity代碼如下:packagecom.veer;importjava.io.InputStream;importjava.security.KeyStore;importorg.a

12、pache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.client.HttpClient;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpUriRequest;importorg.apache.http.conn.scheme.Scheme;importorg.apache.http.conn.ssl.SSLSocketFactory;importorg.apache.

13、http.impl.client.DefaultHttpClient;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;publicclassHttpsClientActivityextendsActivity/*Calledwhentheactivityisfirstcreated.*/privateButtontestButton;privateString

14、httpsUrl=13:8443/HttpsServer/TestService;HttpClienthc=newDefaultHttpClient();OverridepublicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);testButton=(Button)findViewById(R.id.testButton);testButton.setOnClickListener(newOnClickListener()Overrid

15、epublicvoidonClick(Viewv)tryinitKey();catch(Exceptione)e.printStackTrace();tryStringresult=getData(httpsUrl);System.out.println(result=+result);catch(Exceptione)e.printStackTrace(););privatevoidinitKey()throwsExceptionKeyStoretrustStore=KeyStore.getInstance(BKS);trustStore.load(getBaseContext().getR

16、esources().openRawResource(R.raw.server_trust),123456.toCharArray();SSLSocketFactorysocketFactory=newSSLSocketFactory(trustStore);Schemesch=newScheme(https,socketFactory,8443);hc.getConnectionManager().getSchemeRegistry().register(sch);privateStringgetData(Stringurl)throwsExceptionHttpUriRequesthr=newHttpGet(url);HttpResponsehres=hc.execute(hr);HttpEntityhe=hres.getEntity();InputStreamis=he.getContent();StringBuffers

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論