`
wengsibo
  • 浏览: 80674 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

java获取Http数据

 
阅读更多
接口:
package com.miniracle.info.io;
/**
 * 所有获得数据的父类
 * @author laisz
 *
 */
public interface IReader {
	/**
	 *根据参数获得数据 
	 * @param str
	 * @return
	 */
	public String getData(String str);
	public String getData(String str,String sParam);
	
}



实现类:
package com.miniracle.info.io;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;

public class HTMLReader implements IReader {

	public String getData(String sUrl) {
		return getData(sUrl,"");
		
	}

	public String getData(String sUrl, String sParam) {
		// TODO Auto-generated method stub
	      StringBuffer sb = new StringBuffer();

	        try{//""
	          URL url = new URL(sUrl);

	          URLConnection urlc = url.openConnection();
	          urlc.setDoOutput(true);
	          OutputStreamWriter wr=new OutputStreamWriter(urlc.getOutputStream());
	          wr.write(sParam);
	          wr.flush();

	          InputStream is = urlc.getInputStream(); // To download

	          int allLine = 0;
	          InputStreamReader ir = new InputStreamReader(is);
	          BufferedReader br = new BufferedReader(ir);
	          String line;
	          while((line=br.readLine())!=null){
	              sb.append(line+"\r\n");
	        }
	        }catch(Exception e){
	          e.printStackTrace();
	          return e.toString();
	        }
	        return sb.toString();		
	}

}
分享到:
评论
17 楼 rainsilence 2010-12-10  
以上代码请大家谨慎模仿。。。
16 楼 rainsilence 2010-12-10  
以上代码问题多多

1)allLine是什么?没用到?
2)line并没有初始化
3)所有用到的流都没有关闭
4)urlc发送请求的时候实际上应该做判断,是否是http请求。如果是,则对其进行httpUrlConnection强转,并且设置提交方式,content-type,cache。
5)return e.toString()????大哥。。。这样写什么意思啊
6)如果读出来的是http代码,那么你append(\r\n)已经跟原来的代码不一样了
7)缩进!!!
8)如果这只是一个简单的功能函数,那么是不应该在这段代码里把exception给吃掉的。应该throw至上层

以下是功能改进建议
1.sParam不应该是String,而应该是map,但不是一般的map。是可以允许key重复的map
增加一个功能函数,实现map到string的转换,即key=value&key=value
2.如果inputstream返回的是http文本还好,如果是2进制文件,那用Reader就完蛋了
15 楼 悠游键客 2010-12-10  
对异常的处理确实存在很不合理的地方
14 楼 laofee 2010-12-10  
IOUtils.toString()可以用一下
13 楼 luciferdevil 2010-12-09  
// TODO Auto-generated method stub 
12 楼 luciferdevil 2010-12-09  
自己去写个接口做什么
11 楼 grave 2010-12-09  
居然还return e.toString(). 很不知所谓的设计
10 楼 chris_zley 2010-12-09  
看起来就是个破轮子
9 楼 ak121077313 2010-12-09  
另外 为什么很多人喜欢接口?

接口这东西 在大部分范围内 是一个很烦的设计
8 楼 ak121077313 2010-12-09  
超时、转码 这些都没有的话 你这段代码可以再压缩一半
7 楼 ansjsun 2010-12-09  
题目没错.内容没错.你的眼神错了..
6 楼 iehyou 2010-12-09  
我也觉得隐藏  另外 头像的确销魂 hehe
5 楼 wengsibo 2010-12-09  
http4j 写道
楼主,你的头像很销魂,哈哈哈哈哈哈

谢了。。
4 楼 wengsibo 2010-12-09  
zgzdzh 写道
不久这个帖子会被隐藏的

为咋呢?总有原因啊。新人不懂啊。
3 楼 zgzdzh 2010-12-09  
不久这个帖子会被隐藏的
2 楼 wengsibo 2010-12-09  
zgzdzh 写道
LZ新来的?

是新来的。。咋了?
1 楼 zgzdzh 2010-12-09  
LZ新来的?

相关推荐

Global site tag (gtag.js) - Google Analytics