Java http get

一般在java处理Get/Post请求,用的比较多是apache的commons-httpclient.jar库,封装比较彻底,使用比较简单。有些简单应用场合,不需要使用httpclient库,可以直接使用Java内置URLConnection类。

客户端:

public String getInfoFromServ( String path ){
	BufferedReader in = null;
	String result = "";
	
	try {
		URL url = new URL(path);
		URLConnection urlcon = url.openConnection();

		// 设置读取编码 UTF-8
		in = new BufferedReader(new InputStreamReader(urlcon.getInputStream(),"UTF-8"));
		String line;
		
		// 循环读取多行内容,注源服务器内容一定要以\n结尾
		while ((line = in.readLine()) != null) {
			result += line;
		}
	} catch (IOException e) {
		e.printStackTrace();
	}finally{
		if( in != null){
			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	// 解析出resultData字段
	JSONObject json = null;
	try {
		json = new JSONObject(result);
		result = json.getString("resultData");
	} catch (Exception e) {
		e.printStackTrace();
	}
	
	return result;
}

    通过URLConnection的getInputStream()获取输入流,然后通过BufferedReader逐行读取。上述代码在测试环境中正常,能取到服务器完整的JSON字段值,但是部署到现场后,发现只能取到部分JSON字段,这Java不是跨平台的么,服务器不同执行结果还不同了?最后发现是由于服务器端返回内容格式问题,BufferedReader是逐行读取,每行以\n结尾。可能由于java版本不同,代码做了相应优化所致。

服务端:

rep.setContentType("text/json;charset=utf-8");
PrintWriter out = rep.getWriter();
out.println(strJson);	// 调用println()输出换行符,不用print()
out.flush();

附:org.json

猜你喜欢

转载自tcspecial.iteye.com/blog/2263386
今日推荐