服务器直接使用httpRequest相互传文件

睡不醒的加菲 2016-04-12 04:13:54
需求是两台服务器直接使用http发送post请求,将文件从客户端服务器(以下简称A服务器)传递到服务端服务器(以下简称B服务器)。
先上A服务器代码
public static void main(String[] args) {

String targetURL = null;// TODO 指定URL
File targetFile1 = null;// TODO 指定上传文件
File targetFile2 = null;// TODO 指定上传文件

targetFile1 = new File("D://test//pic//2016-04-05//123.png");
targetFile2 = new File("D://test//pic//2016-04-05//test.png");

PostMethod filePost = new PostMethod(targetURL);
filePost.setRequestHeader("enctype", "multipart/form-data");
try
{
Part[] parts = {
new FilePart(targetFile1.getName(), targetFile1),
new FilePart(targetFile2.getName(), targetFile2),
new StringPart("hphm", "成Y56338","UTF-8"),
new StringPart("place", "青年路","UTF-8"),
new StringPart("picNum", "2"),
new StringPart("time", "2016-04-05 14:49:47")
};
filePost.setRequestEntity(new MultipartRequestEntity(parts,filePost.getParams()));
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
int status = client.executeMethod(filePost);
if (status == HttpStatus.SC_OK)
{
System.out.println("上传成功");
// 上传成功
}
else
{
System.out.println("上传失败");
// 上传失败
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
filePost.releaseConnection();
}
}

注意,这里传递中文参数时候要使用 new StringPart("key", "value","UTF-8"),这个方法来指定字符集,否则中文依旧乱码


这样传递参数的时候,在B服务器中通过request,getParameter("")这个方法获取的中文会有乱码,使用如下方法获取就可以避免中文乱码的问题:
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
String hphm = multipartRequest.getParameter("hphm");
String place = multipartRequest.getParameter("place");
String time = multipartRequest.getParameter("time");
String picNum = multipartRequest.getParameter("picNum");




...全文
128 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧