2010-10-28 69 views
2

我有一個形象的坐在我的SD卡(類型爲JPG格式),我試圖通過HttpPost發送圖像上的Apache Tomcat運行7.0發送圖片(JPG格式)通過HttpPost從安卓到的Servlet(Web服務器)

我的servlet

到目前爲止,我已經谷歌的方式來做到這一點,但我似乎無法找到完美的方式。

你們中的任何一個人都可能對這個問題有一些建議或解決方案嗎?

謝謝你在前進, 薩米斯蒂文Djap

回答

1

HttpClient是使用類,有一個tutorial它。使用HTTP客戶端,位於圖片後面,參見部分。

UPDATE
下面是從Developerlife.com教程示例評論。這個例子的一個好處是,它演示瞭如何通過將一種類型編碼到另一種類型來發送各種類型的數據。

字符串放入被寫入一個哈希表:一個也可以,通過在該數據的類型相匹配的鏈的點開始將要發送發送任何數據轉換的該鏈中使用的類型的到一個ObjectOutputStream,它由一個ByteArrayOutputStream支持,它被轉換成ByteArray,ByteArray又被轉換爲ByteArrayEntity進行傳輸。

要發送只是的ByteArray,跳過所有的數據變成了的ByteArray之前發生的步驟。在其中一個的ByteArraytoByteArray().

創建要發送其他類型的線26跳,請執行下列操作(根據例子):
第26行:的ByteArray,只是用它來製作ByteArrayEntity
第26行:ByteArrayOutputStream,將其轉換爲的ByteArray
第24行:ObjectOutputStreams:上BYTEA創建它們rrayOutputStreams
第25行:對象:寫字符串哈希表等一個的ObjectOutputStream

1 /** this method is called in a non-"edt" thread */ 
2 private void _doInBackgroundPost() { 
3 Log.i(getClass().getSimpleName(), "background task - start"); 
4 
5 
6 Hashtable<String, String> map = new Hashtable(); 
7 map.put("uid", uid); 
8 map.put("pwd", pwd); 
9 
10 try { 
11  HttpParams params = new BasicHttpParams(); 
12 
13  // set params for connection... 
14  HttpConnectionParams.setStaleCheckingEnabled(params, false); 
15  HttpConnectionParams.setConnectionTimeout(params, NetworkConnectionTimeout_ms); 
16  HttpConnectionParams.setSoTimeout(params, NetworkConnectionTimeout_ms); 
17  DefaultHttpClient httpClient = new DefaultHttpClient(params); 
18 
19  // create post method 
20  HttpPost postMethod = new HttpPost(LoginServiceUri); 
21 
22  // create request entity 
23  ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
24  ObjectOutputStream oos = new ObjectOutputStream(baos); 
25  oos.writeObject(map); 
26  ByteArrayEntity req_entity = new ByteArrayEntity(baos.toByteArray()); 
27  req_entity.setContentType(MIMETypeConstantsIF.BINARY_TYPE); 
28 
+0

好了,我已經看到了在此之前的教程,但它顯示發送字符串的方式。我不知道如何用相同的方法發送一個字節[] – Sammm 2010-11-02 17:06:06

+0

不,他們發送一個由ByteArray構成的ByteArrayEntity。 ByteArray恰好是從* Strings *創建的,之前大約有6次轉換。 [像Java中的「pwd」這樣的字符串是對象](http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html),比C風格的字符複雜得多字符串,它們非常接近* ByteArray。*我更新了答案,希望能更清楚地說明ByteArray是如何發送的。 – frayser 2010-11-03 12:18:20

+0

當使用Facebook等必需的特定社交媒體制作登錄和註銷邏輯時,它也有用嗎? – 2013-08-31 10:01:37

0

我已經在一點點清潔的方式但asp.net「web表單」做到了這一點。我相信有人可以輕鬆地對servlet進行改造。你可以找到我的解決方案here

歡呼

Fahar