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

睡不醒的加菲 睡不醒的加菲 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
需求是两台服务器直接使用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");




...全文
评论
收藏 已收藏
分享
返回顶部
睡不醒的加菲
Java 51,407 成员 86,129 内容