`
阅读更多
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);
}
}
}
分享到:
评论

相关推荐

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    c++ http通讯 基于mongoose 的httpserver和httpclient

    Mongoose的整个代码只有一个c文件和一个h文件,使用起来非常方便。 c++ http通讯 基于mongoose 的httpserver和httpclient。Mongoose是一个轻量化的web服务器,通过提供一个web接口给它,它可以嵌入到现有的工程当中...

    HttpClient PostMethod 上传文件

    本人自己总结的httpClient PostMethod 上传文件完整实例 以及 使用java PostMethod 和GetMethod 发送请求实例 及乱码处理

    两个系统之间发送文件客户端和服务端

    两个系统之间发送文件的客户端和服务端,例子是客户端发送pdf文件,服务端接受pdf并保存的例子,采用的是httpclient的方式发送的http请求

    guzzle:Guzzle,一个可扩展PHP HTTP客户端

    简单的界面,用于构建查询字符串,POST请求,流式传输大型上传文件,流式传输大型下载文件,使用HTTP cookie,上传JSON数据等。 可以使用同一接口发送同步和异步请求。 使用PSR-7接口处理请求,响应和流。 这使您...

    JAVA上百实例源码以及开源项目

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    精通ANDROID 3(中文版)1/2

    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 ...

    精通Android 3 (中文版)2/2

    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上百实例源码以及开源项目源代码

    Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证...

    Android典型技术模块开发详解

    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开源包8

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包1

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包11

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包2

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包3

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包6

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包5

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包10

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包4

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

Global site tag (gtag.js) - Google Analytics