編輯:Android開發教程
Android網絡應用開發,主要有兩種方式,一種是socket(是對tcp/udp協議的封裝),另外一種就是使用Http協議,Android中主要提供了兩種方式,HttpURLConnection和Apache HttpClient。下面對Android網絡應用開發進行具體的闡述。
socket是為了網絡服務提供的一種機制。通信的兩端都是socket。
網絡通信其實就是socket間的通信。
數據在兩個socket間進行io傳輸。
定義碼頭
即:定義一個DatagramSocket對象ds
定義可以用來接收或者發送數據的集裝箱
即:定義DatagramPacket對象dp
在碼頭上用集裝箱接受對象發送過來的數據(ds.receive(dp))
關閉碼頭(ds.close())
JDK 的 java.net 包中已經提供了訪問 HTTP 協議的基本功能:HttpURLConnection。HttpURLConnection是java的標准類,HttpURLConnection繼承自URLConnection,可用於向指定網站發送GET請求、POST請求。
下面是一個使用HttpURLConnection類的get請求訪問網絡的工具類:
path是url字符串 * InputStream */ InputStream (String path) { URL url = ; { url = URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod(); conn.setConnectTimeout(); conn.setDoInput(); (conn.getResponseCode() == ) { InputStream in = conn.getInputStream(); in; } } (MalformedURLException e) { e.printStackTrace(); } (IOException e) { e.printStackTrace(); } ; }
HTTP 協議可能是現在 Internet 上使用得最多、最重要的協議了,越來越多的 Java 應用程序需要直接通過 HTTP 協議來訪問網絡資源。雖然在 JDK 的 java net包中已經提供了訪問 HTTP 協議的基本功能,但是對於大部分應用程序來說,JDK 庫本身提供的功能還不夠豐富和靈活。HttpClient 是 Apache Jakarta Common 下的子項目,用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議。
httpClient就是一個增強版的HttpURLConnection,HttpURLConnection可以做的事情HttpClient全部可以做;HttpURLConnection沒有提供的有些功能,HttpClient也提供了,但它只是關注於如何發送請求、接收響應,以及管理HTTP連接。
下面是使用httpClient get方式訪問網絡的工具類:
stream * */ [] (InputStream stream) IOException{ [] ret = ; ByteArrayOutputStream bout = ByteArrayOutputStream(); [] buf = []; len; () { len = stream.read(buf); (len == -) { ; } bout.write(buf, , len); } buf = ; ret = bout.toByteArray(); bout.close(); ret; } url 網址 * */ [] (String url) { [] ret = ; HttpGet request = HttpGet(url); HttpClient client = DefaultHttpClient(); { HttpResponse response = client.execute(request); StatusLine statusLine = response.getStatusLine(); statusCode = statusLine.getStatusCode(); (statusCode == ) { HttpEntity entity = response.getEntity(); InputStream stream = entity.getContent(); ret = readStream(stream); stream.close(); } } (IOException e) { e.printStackTrace(); } ret; }
在上一節中,菜單選項是沒有文字的。如果想要同時顯示圖標和文字,可以一起使用“|”和 MenuItem.SHOW_AS_ACTION_WITH_TE
android app一般性架構設計一.UI層(Activity+Fragment基類設計+部分自定義控件)KJActivity(Activity繼承鏈的規范)I_KJA
現在,我們就可以去修改上一節中的項目了。這樣,在用戶按menu鍵的時候就會彈出選項菜單了。1. 使用上一節中的工程,在MenusActivity.java中添加一些代碼。
今天心血來潮,又把ADT升級了一下,升級到了ADT 22,悲催的發現項目用不了了(能編譯通過,運行出錯)。錯誤一:(警告)Unable to resolve superc