我的SD卡(jpg类型)上有一个图像,我试图通过HttpPost将图像发送到我在Apache Tomcat 7.0上运行的servlet
到目前为止,我一直在谷歌方式做到这一点,但我似乎无法找到完美的方式。
你们中的任何人可能对这个问题有一些建议或解决方案吗?
提前谢谢你, Sammy Stevan Djap
答案 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)