通过HttpPost从Android发送图像(jpg)到Servlet(WebServer)

时间:2010-10-28 22:44:15

标签: android image servlets send http-post

我的SD卡(jpg类型)上有一个图像,我试图通过HttpPost将图像发送到我在Apache Tomcat 7.0上运行的servlet

到目前为止,我一直在谷歌方式做到这一点,但我似乎无法找到完美的方式。

你们中的任何人可能对这个问题有一些建议或解决方案吗?

提前谢谢你, Sammy Stevan Djap

2 个答案:

答案 0 :(得分:1)

HttpClient是要使用的类,它有一个tutorial。请参阅图片后面的使用HTTP客户端部分。

<强>更新
以下是来自Developerlife.com的教程示例的评论。该示例的一个好处是它演示了如何通过将一种类型编码到另一种类型来发送各种类型的数据。通过从链中与要发送的数据类型匹配的点开始,可以发送该数据转换链中使用的任何类型:

字符串放在 Hashtable 中,该 Hashtable 写入 ObjectOutputStream ,由 ByteArrayOutputStream 支持转换为ByteArray,然后转换为ByteArrayEntity进行传输。

要仅发送 ByteArray ,请跳过数据变为 ByteArray 之前发生的所有步骤。跳转到第26行,其中使用toByteArray().创建 ByteArray

对于发送其他类型,请执行以下操作(根据示例):
第26行: ByteArray ,只需使用它来制作 ByteArrayEntity
第26行: ByteArrayOutputStream ,将其转换为 ByteArray
第24行: ObjectOutputStreams :在 ByteArrayOutputStreams 上创建它们 第25行:对象:将字符串 Hashtables 等写入 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 

答案 1 :(得分:0)

我用更简洁的方式完成了这项工作,但是使用了asp.net'web form'。我相信有人可以轻松地在servlet中进行改造。您可以找到我的解决方案here

欢呼声

Fahar