httpclient 4.1 很好的支持了 上传file的功能,下面来看一下具体的代码实现。
package com.whl.httpclient;
import java.io.File;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class ClientMultipartFormPost {
public static void main(String[] args) throws ClientProtocolException, IOException {
HttpClient httpclient = new DefaultHttpClient();
try {
HttpPost httppost = new HttpPost("http://localhost:8080/table!uploadFile");
FileBody bin = new FileBody(new File("d:/whlwhlwhl.txt"));
StringBody comment = new StringBody("just test");
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("upload", bin);//upload为请求后台的File upload;属性
reqEntity.addPart("str", comment);//str 为请求后台的String str;属性
httppost.setEntity(reqEntity);
HttpResponse response = httpclient.execute(httppost);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode == HttpStatus.SC_OK){
HttpEntity resEntity = response.getEntity();
System.out.println(EntityUtils.toString(resEntity));//httpclient自带的工具类读取返回数据
EntityUtils.consume(resEntity);
}
} finally {
try {
httpclient.getConnectionManager().shutdown();
} catch (Exception ignore) {
}
}
}
}
不过如果遇到上传的文件名是中文的名字的话,该如何解决呢?
求解答?
分享到:
相关推荐
首先,你需要在Struts2配置文件中启用文件上传,然后创建一个Action类,该类包含一个`java.io.File`或`org.apache.struts2.dispatcher.multipart.FileItem`类型的属性来接收上传的文件。在Action中处理文件,比如...
HttpClient可以帮助我们在后台模拟用户请求,与Struts2 Action进行交互,以便测试或实现服务间通信。 在使用HttpClient时,我们需要创建一个`CloseableHttpClient`实例,然后使用`HttpPost`或`HttpGet`对象来构建...
在Struts中实现文件上传,你需要配置struts.xml文件,定义一个表单bean来接收文件字段,并在Action类中处理上传请求。Struts提供了`org.apache.struts.action.ActionForm`和`org.apache.struts.upload.FormFile`类来...
4. **使用MultipartEntity或RequestBody**:对于包含文件的数据,我们通常使用MultipartEntity(如果你使用的是Apache HttpClient)或RequestBody(如果你使用OkHttp)。在MultipartEntity或RequestBody中,我们可以...
1. **控制器层**:Struts的Action类作为请求处理的核心,接收来自HttpClient的HTTP请求,调用相应的业务逻辑,然后将结果返回给客户端。通过配置Struts配置文件,可以定义多个Action,对应不同的查询操作。 2. **...
2. **发起HTTP请求**:使用选择的网络请求库,设置请求方法(GET或POST),URL(指向Struts2 Action的URL),以及请求头(如Content-Type: application/json)。 3. **发送JSON数据**:如果使用POST请求,将JSON...
在Action类中定义方法,接收并处理上传的文件。 - 使用`CommonsFileUpload`库解析请求中的文件,将文件保存到服务器。 7. **客户端响应处理**: - 客户端需要监听网络请求的响应,判断上传是否成功。如果成功,...
4. **Android网络请求**:在Android中,与服务器进行网络通信通常使用`HttpURLConnection`、`HttpClient`(已废弃)、`Volley`、`Retrofit`或`OkHttp`等网络库。这些库可以帮助我们发送GET或POST请求,接收服务器...
在Action类中,为了让Struts2能够访问到HttpServletRequest和HttpServletResponse对象,Action类需要实现ServletRequestAware和ServletResponseAware接口,并覆写对应的setter方法。 接下来,我们转向Android客户端...
服务器接收到请求后,通过Struts框架的Action类处理,使用Hibernate查询数据库验证信息。如果验证成功,服务器将生成一个包含会话ID的JSON响应,返回给客户端。客户端保存会话ID以进行后续的无状态请求。 在项目中...
在IT行业中,jar(Java Archive)包是Java编程语言中的一种归档格式,用于收集多个类文件、相关的元数据和资源文件,以便于分发和使用。这些jar包在标题中提到的“常用的jar包”是指在开发Java应用程序时经常用到的...
- 使用`HttpClient`配合`HttpPost`或`HttpGet`发送请求。 - 处理JSON数据时,可以使用`JsonObject`类。 3. **页面跳转** - 前端跳转:使用`window.location.href`或`document.location`。 - 后台跳转:通过`...
### 使用Android搭建客户端_手机和服务器交互开发实例 #### 概述 本文旨在详细介绍如何使用Android平台搭建客户端,实现手机与服务器之间的数据交互。重点介绍采用SSH(Spring、Struts2、Hibernate)框架进行...
4. **Struts框架与JSON** - 在Struts2框架中,可以配置Action支持JSON输出,使得HTTP响应可以直接返回JSON数据,这对于AJAX请求特别有用。只需在Action配置中添加`@Result(type="json")`注解即可。 5. **JSON与...