`
avery_leo
  • 浏览: 387833 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

httpclient笔记(二)

阅读更多

不多说了,直接上示例:

 

A服务器:

 

 msURL为:http://192.168.7.203:8080

 

 

/**
	 * 发送文件到另一台服务器B
	 * 
	 * @param File file 附件
	 * @param serviceType服务类型
	 * @param spId id
	 * @return
	 */
	public String sendApply(File file, String serviceType, String spId) {
		String fromAgentResult = "";
		HttpClient client = new HttpClient();
		PostMethod filePost = new PostMethod(msUrl+"?serviceType="+serviceType+"&spId="+spId+"&type=menu");
//		 MultipartPostMethod filePost = new MultipartPostMethod(msUrl);
		// 若上传的文件比较大 , 可在此设置最大的连接超时时间 
		 client.getHttpConnectionManager(). getParams().setConnectionTimeout(8000);  

		try {

			FilePart fp = new FilePart(file.getName(), file);
			MultipartRequestEntity mrp= new MultipartRequestEntity(new Part[]{fp}, filePost.getParams());
			filePost.setRequestEntity(mrp);

			//使用系统提供的默认的恢复策略
			filePost.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
			    new DefaultHttpMethodRetryHandler());

			int httpStat = client.executeMethod(filePost);
			System.out.println("httpStat----"+httpStat);
			if (!(httpStat == HttpStatus.SC_OK)) {
				fromAgentResult = "connected fail:" + httpStat;
			} else if (httpStat == HttpStatus.SC_OK) {
				
				try {
					DocumentBuilderFactory factory = DocumentBuilderFactory
							.newInstance();
					DocumentBuilder builder = factory.newDocumentBuilder();
					Document doc = builder
							.parse(filePost.getResponseBodyAsStream());
					doc.normalize();
					// NodeList optypeNL= doc.getElementsByTagName("optype");
					NodeList resultNL = doc.getElementsByTagName("result");
					// fromAgentOptype=
					// optypeNL.item(0).getFirstChild().getNodeValue();
					fromAgentResult = resultNL.item(0).getFirstChild()
							.getNodeValue();
					System.out.println("发送请求完毕,接收状态:"+fromAgentResult);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		} catch (HttpException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		filePost.releaseConnection();
		return fromAgentResult;
	}

 

B服务器接收:

 

	boolean bl = false;
		System.out.println("接收文件开始--------------");
		String serviceType = request.getParameter("serviceType");
		String spId = request.getParameter("spId");
		String type = request.getParameter("type");
		if (type.equals("menu")) {

			DiskFileUpload fu = new DiskFileUpload();
			fu.setSizeMax(1000000);

			List fileItems;

			try {
				fileItems = fu.parseRequest(request);
				Iterator itr = fileItems.iterator();
				while (itr.hasNext()) {
					FileItem fi = (FileItem) itr.next();

					if (!fi.isFormField()) {
						System.out.println("\nNAME: " + fi.getName());
						System.out.println("SIZE: " + fi.getSize());
						try {
							String newFileName = msu.updateName(Integer
									.parseInt(serviceType), spId);
							System.out.println("newFileName---------------"
									+ newFileName);
							File fNew = new File(applyFilePath, newFileName);
							fi.write(fNew);
							bl = msu.acceptApply(Integer.parseInt(serviceType),
									spId, newFileName);

							System.out.println(fNew.getAbsolutePath());

						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					} else {
						System.out.println("Field =" + fi.getFieldName());
					}
				}

			} catch (FileUploadException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
//下面是返回执行结果
  msu.responseToAS(response, bl);
  System.out.println("接收申请处理完毕,状态:" + bl);
  return null;
//msu.responseToAS
public void responseToAS(HttpServletResponse response, boolean synSuccess) {
  try {
   PrintWriter out = response.getWriter();
   if (synSuccess)
    out
      .println("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><result>ok</result></root>");
   else
    out
      .println("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><result>fail</result></root>");
  } catch (IOException e) {
   e.printStackTrace();
   System.out.println("responseToAS--error");
  }
 }

 

分享到:
评论
1 楼 dikesky 2012-04-20  
您好,看了您的这篇文章学到很多东西。希望您提供一个QQ号(发到我的邮箱),与您进一步探索。
我的邮箱:fengq_sun@163.com

相关推荐

    HttpClient学习笔记

    HttpClient学习笔记 模拟测试浏览器表单提交

    httpclient4.5笔记,常用知识点,从零开始也能看懂(持续更新)

    以下是一些关于 HttpClient 4.5 的重要知识点: 1. **HttpClient 创建与配置**: HttpClient 4.5 提供了 `HttpClients.createDefault()` 方法,用于创建默认的、可关闭的 HTTP 客户端实例。全局使用一个客户端可以...

    HttpClient学习笔记参考.pdf

    6. **连接管理**: HttpClient 内置了连接管理器,可以控制并发连接的数量,自动检测并关闭失效连接,适应多线程应用。 7. **持久连接**:支持HTTP/1.0的KeepAlive和HTTP/1.1的持久连接,提高效率。 8. **直接访问...

    httpclient4中文API和使用

    `httpClient笔记.docx`可能是用户或教程作者整理的关于使用HttpClient的笔记或实战案例,可能包括一些常见问题的解决方案,比如处理重定向、处理cookies、上传下载文件、使用HTTPS等。 学习HttpClient时,除了API...

    HttpClient 学习笔记

    HttpClient 特别强调了在多线程环境中的连接管理和性能优化,能够处理代理、SSL/TLS 安全连接、认证以及文件上传等功能。 在使用 HttpClient 之前,可能需要进行一些预备工作。例如,如果你的 JRE 版本是 1.3.* ...

    android 学习笔记6-HttpClient 多线程下载 断点续传 进度条 源码关联

    1、使用HttpClient发送GET请求: 2、使用HttpClient发送POST请求:和之前的GET类似 3、使用异步HttpClient发送请求,可以在github上找一些别人已经写好的代码,封装度比较高,直接拿来用。 4、多线程下载:使用...

    淘淘商城笔记

    《淘淘商城笔记》主要涵盖了Java技术在电商系统开发中的应用,这是一份详细记录了淘淘商城系统架构和技术选型的学习文档。由于文件名仅给出"笔商城记",推测这可能是文档的部分章节或者子目录,具体内容可能包括但不...

    http client

    HttpClient是Apache开源组织提供的一个Java库,用于执行HTTP请求。...通过阅读官方文档和相关的学习笔记(如HttpClient学习笔记.doc),可以进一步深化对HttpClient的理解,掌握其高级特性和最佳实践。

    有道云笔记内容下载java版,有道云笔记备份到本地

    标题 "有道云笔记内容下载java版,有道云...它利用了Java的网络请求库(如HttpURLConnection或Apache HttpClient)、JSON解析库(如Jackson或Gson)以及文件操作功能,为用户提供了便捷的数据备份和本地化管理方式。

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    Android代码-AndroidNote Android笔记

    Android学习笔记 &gt; 十年生死两茫茫,不思量,自难忘,华年短暂,陈辞岁月悠悠伤, &gt; 满腔热血已芜荒,展未来,后生强,战战兢兢,如履薄冰心彷徨, &gt; 青丝化雪、鬓角成霜,已是英雄迟暮,人生怎慷慨激昂? 目录 ...

    Java学习笔记(javase)

    Apache是Java生态系统中的一个重要组成部分,它不仅是一个开源的Web服务器,也是许多Java库和框架(如Apache HttpClient、Apache Tomcat等)的开发者。这些库和框架简化了开发过程,提供了诸如HTTP通信、应用服务器...

    学习笔记 十分有用 java

    你还能了解到URL、URLConnection以及HTTPClient的相关知识,这些都是构建网络应用的关键。 此外,笔记中还包含了对Tomcat服务器的介绍和使用。Tomcat是一款轻量级的Java Web应用服务器,是初学者部署和运行Servlet...

    B站java狂神说笔记

    Apache是常见的开源软件项目,其产品如Tomcat(Java EE应用服务器)、HttpClient(网络通信库)、Log4j(日志框架)等在Java开发中广泛应用。笔记可能会介绍如何集成和使用这些工具。 总结,【Java狂神说笔记】是一...

    jt07日常笔记

    笔记不仅涵盖了项目的具体实施细节,还涉及到了多种技术手段的运用,如JSONP、HttpClient等,这些技术在实际开发过程中起到了关键作用。 #### 二、跨域访问解决方案:JSONP 跨域问题一直是前端开发中的一个重要...

    jt08工作笔记

    ### jt08工作笔记知识点梳理 #### 商品详情页与前后端交互 - **商品详情页设计**:在项目04中,商品详情页是前端与后端交互的关键环节。前端负责展示商品信息,而后端则负责组织并提供这些信息。 - **前后端交互...

    Android开发之HttpClient异步请求数据的方法详解【附demo源码下载】

    前面一篇Android开发笔记之:AsyncTask的应用较为详细的讲述了Asynctask的原理与应用,这里来结合使用一下HttpClient与Asynctask~ 代码编写如下: 服务器代码我就不写出来了,就是一个用户名和密码~ 1.写一个类...

    Mono for Android和MonoDroid学习笔记全套

    6. **网络通信**:了解如何使用HttpClient或WebClient进行网络请求,以及如何处理JSON或XML数据。 7. **权限管理**:Android应用需要声明和管理权限,笔记会介绍如何在AndroidManifest.xml中配置权限。 8. **调试...

Global site tag (gtag.js) - Google Analytics