论坛首页 入门技术论坛

用socket写了个HttpClient 分享下,支持get,post,支持文件上传。

浏览 8151 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-08-31   最后修改:2009-08-31
	/**
		 一个最简单的例子
		 import com.fyf.http.common.*;
		 */
		HttpClient client=HttpClient.newInstance();
		HttpResult result=client.get("www.google.cn");
		byte [] res=result.get();
//		result.getStrByUtf(); 相当于 new String(result.getBytes(),"utf-8"); 同理 getStrByGbk();
		System.out.println(new String(res));
		/**
		 应为返回值不一定是文本,所以用了HttpResult 来代替返回值String 或byte[]  ,
		 List<String> list=result.getHead();
		 返回服务器返回的头信息,一般兵部需要,没有解析。你可以用循环看看里面的值,
		 Map<String,String> map=result.getHeadMap();
		 还是返回头信息,已经解析,你可以用循环看看里面的值,
		 System.out.println(result.getEndType());
		 你可以用这种方式,看底层的套接字是读到-1 break的,还是说读到文件足够长break;
		 */
		Data data1=new Data("www.google.cn");
		client.get(data1);
//		第2种方式
		
/**		如果你要使用post方式提交,这样做
 * */
		Data data=new Data("www.google.cn");
		data.addData("name", "fyf");
		data.addData("password", "123");
		
		HttpResult result2=client.post(data);
		//方式2 
		client.post("www.google.cn", "name=fyf&password=123");
		
//		如果你要提交文件
//		这样做
		
		Data data=new Data("www.google.cn");
		data.addData("name", "fyf");
		data.addData("password", "123");
		
		data.addFile("upload", new File("d://111.rar"));// upload 相当于,您在html页面上的<input type=file  name='upload'> 的name
		
		client.post(data);
		
		
		/**
		 可以用更加智能通用的方式来提交请求
		 
		 */
		client.interact(data);
		/*
		 如果data,里面只有设置了utl那么用get提交,
		 如果,设置了addData(),那么用post提交,
		 如果data.addFile(), 里面有文件,那么,以,post mutitype/form-data方式提交
		 */
		所有方式都返回httpresult
   发表时间:2009-08-31  

这个却确实有点像,jdk带的urlconnection
但是,urlconnection用post提交文件不方便,即使是一般的post也不方便。
mdk.jar文件是补充jdk这些不方便的东西而存在的,(当然只是理想了)
目前达到140k的大小,当然不只是有httpclient这东西了,它最多3-10k,
httpclient是昨天加入mdk的功能
0 请登录后投票
   发表时间:2009-08-31  
又见重复发明轮子的。

Apache早有了: http://hc.apache.org/httpcomponents-client/index.html
0 请登录后投票
   发表时间:2009-08-31   最后修改:2009-08-31
kacakong 写道
又见重复发明轮子的。

Apache早有了: http://hc.apache.org/httpcomponents-client/index.html



要自己去实现才会进步,照你的说法:
啊爬其(Apache) 一样重复发明,人家jdk里面早有了。。。。。。。。。
大家都是高技术的,但是人家能做出来,自己却只能使用别人发开的现成的东西,
这样不太好,至少什么都改试下,只要不是太烦杂的东西。

而且我车个传文件肯定更少代码

Data data=new Data("www.urll.com");
data.addFile("file1",new File("d://1.rar"));
HttpClient.newInstance().post(data);

3行代码

0 请登录后投票
   发表时间:2009-08-31  
学习的话,源码呢?
0 请登录后投票
   发表时间:2009-09-01  
楼上要源码只能自己反编一下,呵呵
0 请登录后投票
   发表时间:2009-09-01  
fyf_008 写道
kacakong 写道
又见重复发明轮子的。

Apache早有了: http://hc.apache.org/httpcomponents-client/index.html



要自己去实现才会进步,照你的说法:
啊爬其(Apache) 一样重复发明,人家jdk里面早有了。。。。。。。。。
大家都是高技术的,但是人家能做出来,自己却只能使用别人发开的现成的东西,
这样不太好,至少什么都改试下,只要不是太烦杂的东西。

而且我车个传文件肯定更少代码

Data data=new Data("www.urll.com");
data.addFile("file1",new File("d://1.rar"));
HttpClient.newInstance().post(data);

3行代码


楼主中文错别字不少啊,唉,我最不喜欢的就是看到一堆的拼音错别字
都是打拼音惹的祸,大家都打五笔多好
0 请登录后投票
   发表时间:2009-09-01  
支持重复造轮子!!!!!!!!
要不然咱哪天能造出火车来?
0 请登录后投票
   发表时间:2009-09-01  
请问下载完后让下载次数加一怎么做呢?怎么判断文件下载完了呢?
0 请登录后投票
   发表时间:2009-09-01  
我也写过一个,不过用法和楼主的有不同,但是支持楼主。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics