我正在尝试使用HttpClient和MultipartEntity将图像从Adroid应用程序上传到php网络服务器。
以下是我的代码片段:
protected Void doInBackground(Void... params) {
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost post = new HttpPost( "http://URL/upload.php" );
try {
MultipartEntity entity = new MultipartEntity( );
entity.addPart("type", new StringBody("photo"));
entity.addPart("data", new FileBody(new File (this.path)));
post.setEntity(entity);
post.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false);
post.addHeader( "Content-Type", "multipart/form-data; ");
HttpResponse response = client.execute(post);
HttpEntity resEntity = response.getEntity();
System.out.println(response.getStatusLine());
client.getConnectionManager().shutdown();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
在php文件中我添加了print_r($ _ FILE)以查看数组的内容,并显示一个空数组。
执行HttpClient后,LogCat显示以下内容
06-17 14:54:03.908: I/System.out(1256): HTTP/1.1 200 OK
06-17 14:54:03.998: D/111(1256): Array
06-17 14:54:03.998: D/111(1256): (
06-17 14:54:03.998: D/111(1256): )
06-17 14:54:04.068: D/dalvikvm(1256): GC_CONCURRENT freed 200K, 12% free 2559K/2900K, paused 96ms+5ms, total 161ms
有人可以告诉我我要添加到Android代码中的内容吗?
答案 0 :(得分:0)
根据blog post about using MultipartEntity to post data to a url,您可能需要在项目中包含一些其他jar文件。它们包括以下apache开源项目:apache-mime4j,httpclient, httpcore and httpmime。
答案 1 :(得分:0)
在构造函数中添加:
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);