1.通过HttpClient发送请求登录系统
public static boolean login(HttpClient client,String httpUrl,String userId) throws HttpException, IOException{
boolean result = false;
// HttpClient client = new HttpClient();
client.setTimeout(5000);//5秒超时
client.setConnectionTimeout(5000);
PostMethod postMethod = new PostMethod(httpUrl);
NameValuePair userIdPair = new NameValuePair("userId", userId);
postMethod.setRequestBody(new NameValuePair[] { userIdPair });
int httpStat = client.executeMethod(postMethod);
if (httpStat == HttpStatus.SC_OK) {
result = true;
Cookie[] cookies = client.getState().getCookies();
client.getState().addCookies(cookies);
}
//String loginhtml = postMethod.getResponseBodyAsString();
//System.out.println("login:" + loginhtml);
postMethod.releaseConnection();
return result;
}
2.使用HttpClient发送HTTP请求发送文件
client.setTimeout(300000);//5分钟超时
client.setConnectionTimeout(300000);
PostMethod postMethod = new PostMethod(httpUrl);
// 设置最大连接超时时间
client.getHttpConnectionManager().getParams().setConnectionTimeout(8000);
postMethod.setParameter("Connection", "Keep-Alive");
postMethod.getParams().setContentCharset("UTF-8");
postMethod.getParams().setUriCharset("UTF-8");
List<Part> parts = new ArrayList<Part>();//封装Form表单
Iterator<String> iter = strParts.keySet().iterator();
while (iter.hasNext()) {
String key = (String) iter.next();
String value = (String) strParts.get(key);
StringPart part = new StringPart(key, value, "UTF-8");
parts.add(part);
}
File file = new File(fileName);
FilePart fp = new FilePart("uploadFile", file.getName(), file, null, "UTF-8");
parts.add(fp);
MultipartRequestEntity requestEntity = new MultipartRequestEntity(
parts.toArray(new Part[parts.size()]), postMethod.getParams());
postMethod.setRequestEntity(requestEntity);
postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
int httpStat = client.executeMethod(postMethod);
String responseCode = postMethod.getResponseBodyAsString();
//System.out.println(responseCode);
if (httpStat == HttpStatus.SC_OK) {
result = responseCode;
}else{
result = "1";
}
postMethod.releaseConnection();
3.解析HttpClient的请求
request.setCharacterEncoding("UTF-8");
String responseCode ="0";//远程调用时返回的响应码,0成功 1失败 2上传文件超出限制
String userId = "";
String syncType = request.getParameter("syncType");
String exportCode = "";
String fileName = "";
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(8 * 1024);// 设置缓冲区大小为4kb
String tempFile = request.getRealPath("/") + "data" + File.separator + "temp" + File.separator;
File tempDir = LoaderUtil.createDirectory(tempFile);
factory.setRepository(tempDir);// 设置缓冲区目录
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
upload.setSizeMax(Constants.UPLOAD_FILE_MAXSIZE);// 设置最大文件大小
List<FileItem> fileItems = upload.parseRequest(request);
Iterator<FileItem> iterator = fileItems.iterator();
while (iterator.hasNext()) {
FileItem fileItem = iterator.next();
String itemName = fileItem.getFieldName();
if ("syncType".equals(itemName)) {
syncType = fileItem.getString();
} else if ("userId".equals(itemName)) {
userId = fileItem.getString();
} else if ("uploadFile".equals(itemName)) {
if(fileItem.getSize()<=0){
responseCode = "1";//上传失败
}else if(fileItem.getSize()>Constants.UPLOAD_FILE_MAXSIZE){
responseCode = "2";//数据压缩包超出50M
}else{
File fullFile = new File(fileItem.getName());
fileName = fullFile.getName();
File saveFile = new File(baseDir, fileName);
fileItem.write(saveFile);
}
}
}
分享到:
相关推荐
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
Mongoose的整个代码只有一个c文件和一个h文件,使用起来非常方便。 c++ http通讯 基于mongoose 的httpserver和httpclient。Mongoose是一个轻量化的web服务器,通过提供一个web接口给它,它可以嵌入到现有的工程当中...
本人自己总结的httpClient PostMethod 上传文件完整实例 以及 使用java PostMethod 和GetMethod 发送请求实例 及乱码处理
两个系统之间发送文件的客户端和服务端,例子是客户端发送pdf文件,服务端接受pdf并保存的例子,采用的是httpclient的方式发送的http请求
简单的界面,用于构建查询字符串,POST请求,流式传输大型上传文件,流式传输大型下载文件,使用HTTP cookie,上传JSON数据等。 可以使用同一接口发送同步和异步请求。 使用PSR-7接口处理请求,响应和流。 这使您...
(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...
11.1.2 将HttpClient用于HTTPPOST请求(多部分POST请求示例) 11.1.3 SOAP、JSON和XML分析程序 11.1.4 处理异常 11.1.5 解决多线程问题 11.1.6 有趣的超时 11.1.7 使用HttpURLConnection 11.1.8 ...
11.1.2 将HttpClient用于HTTPPOST请求(多部分POST请求示例) 11.1.3 SOAP、JSON和XML分析程序 11.1.4 处理异常 11.1.5 解决多线程问题 11.1.6 有趣的超时 11.1.7 使用HttpURLConnection 11.1.8 ...
Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...
15.3.1 发送文件 15.3.2 接收文件 15.4 本章小结 第16章 程序优化 16.1 Java内存管理 16.1.1 垃圾回收 16.1.2 内存分配 16.2 Android优化 16.2.1 内存分配跟踪Allocation Tracker 16.2.2 内存监控Heap 16.2.3 内存...
Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...
Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...