`

HttpConnection通信工具类

 
阅读更多

 

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * 项目名称:HC360SSOSecurity    
 * 类名称:HttpConnectionUtil    
 * 类描述:HttpConnection通信工具类
 * 创建人:juapk
 * 创建时间:May 24, 2012 2:38:06 PM    
 * 修改人: 
 * 修改时间:May 24, 2012 2:38:06 PM    
 * 修改备注:    
 * @version  V1.0
 */
public class HttpConnectionUtil {
	private static Log logger = LogFactory.getLog(HttpConnectionUtil.class.getName());
	
	/**
	 * 以URL方式发送数据
	 * 
	 * @param urlStr
	 *            发送地址 www.juapk.com
	 * @param contentStr
	 *            发送内容 id=666888
	 * @param charset
	 *            发送字符集 utf-8
	 * @param sResult
	 *            返回数据Buffer
	 * @param connectTimeout
	 *            连接主机超时(单位:毫秒) 30
	 * @param readTimeout
	 *            从主机读取数据超时(单位:毫秒) 30
	 * @return boolean 发送是否成功 (true||false)
	 */
	public static boolean sendStrOfPost(String urlStr, String contentStr, String charset, StringBuffer sResult,int connectTimeout,int readTimeout) {
		boolean bResult = false;
		String charsetName = charset;
		URL url = null;
		HttpURLConnection httpConnection = null;
		InputStream httpIS = null;
		java.io.BufferedReader http_reader = null;
		try {
			url = new URL(urlStr);
			httpConnection = (HttpURLConnection) url.openConnection();

			// 设置连接主机超时(单位:毫秒)
			httpConnection.setConnectTimeout(connectTimeout);
			// 设置从主机读取数据超时(单位:毫秒)
			httpConnection.setReadTimeout(readTimeout);

			httpConnection.setRequestMethod("POST"); // POST方式提交数据
			httpConnection.setDoOutput(true);
			httpConnection.setRequestProperty("Content-Length", String.valueOf(contentStr.getBytes().length));
			PrintWriter out = null;
			out = new PrintWriter(new OutputStreamWriter(httpConnection.getOutputStream(), charsetName));// 此处改动
			// 发送请求
			out.print(contentStr);
			out.flush();
			out.close();
			int responseCode = httpConnection.getResponseCode();
			if (responseCode == HttpURLConnection.HTTP_OK) {
				// 发送正常
				bResult = true;

				// 读取数据
				httpIS = httpConnection.getInputStream();
				http_reader = new java.io.BufferedReader(new java.io.InputStreamReader(httpIS, charsetName));
				String line = null;
				while ((line = http_reader.readLine()) != null) {
					if (sResult.length() > 0) {
						sResult.append("\n");
					}
					sResult.append(line);
				}
				logger.info("[URL][response][success]" + sResult);
			} else {
				logger.info("[URL][response][failure][code : " + responseCode + " ]");
			}
		} catch (IOException e) {
			logger.error("[HttpUtil]sendStrOfPost error", e);
		}
		finally {
			try {
				if (http_reader != null)
					http_reader.close();
				if (httpIS != null)
					httpIS.close();
				if (httpConnection != null)
					httpConnection.disconnect();
			} catch (IOException e) {
				logger.error("[HttpUtil]finally error", e);
			}
		}
		return bResult;
	}
}
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics