`
avery_leo
  • 浏览: 382694 次
  • 性别: 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笔记,常用知识点,从零开始也能看懂(持续更新)

    最近一直在使用httpclient4.5进行网页爬取,平时有记笔记习惯,里面记录了很多自己的理解,从初级到高级。大部分都是白话描述好理解,包含实例代码都是亲测可行。 如有什么地方没有记录到的,欢迎评论我会持续更新..

    HttpClient 学习笔记

    是一个全面的HttpClient学习笔记,对想了解HttpClient 技术,和全面应用HttpClient技术,有关全面的说明,里面包含了代码

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

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

    淘淘商城笔记

    淘淘商城笔记.docx

    C#HTTPclient 实例应用

    学习C#必经之路,入门级知识总结,笔记本知识概况,走一步再走一步

    Android代码-AndroidNote Android笔记

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

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

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

    android移动互联笔记

    涉及android中移动互联的两种实现方式HttpUrlConnection以及HttpClient 最基础的Socket通信 如何解决乱码问题

    Java 知识汇总(资源,工具,笔记,源码,文章,文档分类整理).zip

    Http客户端接口测试,Okhttp的使用,HttpClient的使用,HttpUrlConnection的使用;集合的常见用法; 线程的基本知识;反射的基本知识;注解的基本知识;异常用法;io的基本用法;常用的json解析框架的使用; - **Java进阶** ...

    黑马安卓基础day4 (总共day8)

    有文档,用到的工具软件,jar包,笔记,图解,源码+注释。视频太大放不上来。以下为今日教学内容,仅供参考。 36_网络图片查看器.avi 37_网页html的查看器.avi 38_视频客户端综合案例&获取数据.avi 39_视频客户端...

    尚硅谷Java11新特性教程.txt

    尚硅谷Java11新特性教程(包含笔记、代码、视频)。新的局部变量的语法、更方便的调试运行程序的方式jshell及直接运行源代码、令人瞩目的ZGC, JFR、全新HttpClient API、兼容Unicode10的新的字符串API等。

    Silverlight2 跨域调用Web服务的方法

    调用Web服务是一种常见的功能,在Silverlight2中也是可以调用别的网站的Web服务的。由于跨域访问存在安全漏洞,所以,默认情况下,Silverlight2不允许跨域进行服务的调用。要实现跨域调用Web服务,需要在被调用的Web...

    xUtils3.0框架学习笔记分享

    使用起来非常方便。主要功能包括: ... 2、拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响。 3、图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp...5、HTTP实现替换HttpClient为UrlConnection

    安卓第七天笔记--网络编程

    同时支持JDK提供的URL,URLConnection等网络通信API.Andoirdgip内置了Apache的HttpClient,这样可以非常方便的发送HTTP请求,并获取HTTP响应.服务器布局文件子线程Activity布局Activity添加网络权限使用URLConnection...

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 淘淘商城第二天笔记.docx │ ├─03.第三天 │ 01.课程回顾.avi │ 02.课程计划.avi │ 03.什么是反向代理.avi │ 04.nginx的反向代理及负载均衡.avi │ 05.FastDFS介绍.avi │ 06.FastDFS安装步骤-文件上传.avi...

    learning-tornado-src:Tornado框架源码学习笔记

    简介 Tornado是一个Python web框架,也是异步网络库,通过使用非双向IO,它可以轻松处理C10K问题,对于长替换,WebSocket等长链接的开发,...├── curl_httpclient.py ├── escape.py ├── gen.py ├── http1c

Global site tag (gtag.js) - Google Analytics