package com.froad.points.bankserver.util;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ConnectException;
import java.net.NoRouteToHostException;
import java.net.SocketTimeoutException;
import org.apache.commons.httpclient.ConnectTimeoutException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.froad.points.bankserver.constant.Constants;
import com.froad.points.bankserver.exception.common.FroadException;
/**
*
* <pre>
* MultiThreadHttpClient 返回字符串和bety[]
* </pre>
*
* @author xueyunlong
* @create 2014年9月15日 下午4:54:24
* @modify
* @since JDK1.6
*/
public class MultiThreadHttpClient {
private static Log logger = LogFactory.getLog(MultiThreadHttpClient.class);
@SuppressWarnings("deprecation")
public static String postMethod(String reqUrl, String strStream) throws FroadException {
String returnStr = "";
logger.info("regUrl:"+reqUrl);
// 多线程
MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
HttpClient httpClient = new HttpClient(connectionManager);
// 测试是否超时
HttpConnectionManagerParams managerParams = httpClient.getHttpConnectionManager().getParams();
// 设置连接超时时间(单位毫秒)
managerParams.setConnectionTimeout(200000);
// 设置读数据超时时间(单位毫秒)
managerParams.setSoTimeout(180000);
PostMethod postMethod = new PostMethod(reqUrl);
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
try {
postMethod.setRequestBody(strStream);
long startTime = System.currentTimeMillis();
int status = httpClient.executeMethod(postMethod);
//System.out.println("postMethod=============="+postMethod);
long endTime = System.currentTimeMillis();
logger.info(status+"status,连接用时" + (endTime - startTime) + "ms");
if(status==HttpStatus.SC_OK){
BufferedReader br=new BufferedReader(new InputStreamReader(postMethod.getResponseBodyAsStream(),"utf-8"));
String line = "";
StringBuffer buffer = new StringBuffer();
while ((line = br.readLine()) != null) {
buffer.append(line);
}
logger.info("响应体:"+buffer.toString());
returnStr = buffer.toString();
} else {
logger.info("服务器HTTP响应异常!状态码:"+status);
throw new FroadException(Constants.RESULT_FAIL,"发生Http异常!");
}
} catch (HttpException e) {
logger.info("发生Http异常:" + e);
throw new FroadException(Constants.RESULT_FAIL,"发生Http异常!");
} catch (NoRouteToHostException e) {
logger.info("本机未联网:" + e);
throw new FroadException(Constants.RESULT_FAIL,"本机未联网!");
} catch (ConnectException e) {
logger.info("连接不上服务器:" + e);
throw new FroadException(Constants.RESULT_FAIL,"连接不上服务器!");
} catch (SocketTimeoutException e) {
logger.info("读取数据超时:" + e);
throw new FroadException(Constants.RESULT_PROCESSING,"读取数据超时!");
} catch (ConnectTimeoutException e) {
logger.info("连接超时:" + e);
throw new FroadException(Constants.RESULT_PROCESSING,"连接超时!");
} catch (IOException e) {
logger.info("发生网络异常:" + e);
throw new FroadException(Constants.RESULT_FAIL,"发生网络异常!");
} catch(Exception e) {
logger.info("发生异常:" + e);
throw new FroadException(Constants.RESULT_FAIL,"发生异常!");
} finally {
postMethod.releaseConnection();
}
return returnStr;
}
@SuppressWarnings("deprecation")
public static byte[] postAsStreamMethod(String reqUrl, String strStream) throws FroadException {
logger.info("regUrl:"+reqUrl);
// 多线程
MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
HttpClient httpClient = new HttpClient(connectionManager);
// 测试是否超时
HttpConnectionManagerParams managerParams = httpClient.getHttpConnectionManager().getParams();
// 设置连接超时时间(单位毫秒)
managerParams.setConnectionTimeout(200000);
// 设置读数据超时时间(单位毫秒)
managerParams.setSoTimeout(180000);
PostMethod postMethod = new PostMethod(reqUrl);
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
try {
postMethod.setRequestBody(strStream);
long startTime = System.currentTimeMillis();
int status = httpClient.executeMethod(postMethod);
//System.out.println("postMethod=============="+postMethod);
long endTime = System.currentTimeMillis();
logger.info(status+"status,连接用时" + (endTime - startTime) + "ms");
if(status==HttpStatus.SC_OK){
byte[] b=InputStreamToByte(postMethod.getResponseBodyAsStream());
return b;
} else {
logger.info("服务器HTTP响应异常!状态码:"+status);
throw new FroadException(Constants.RESULT_FAIL,"发生Http异常!");
}
} catch (HttpException e) {
logger.info("发生Http异常:" + e);
throw new FroadException(Constants.RESULT_FAIL,"发生Http异常!");
} catch (NoRouteToHostException e) {
logger.info("本机未联网:" + e);
throw new FroadException(Constants.RESULT_FAIL,"本机未联网!");
} catch (ConnectException e) {
logger.info("连接不上服务器:" + e);
throw new FroadException(Constants.RESULT_FAIL,"连接不上服务器!");
} catch (SocketTimeoutException e) {
logger.info("读取数据超时:" + e);
throw new FroadException(Constants.RESULT_PROCESSING,"读取数据超时!");
} catch (ConnectTimeoutException e) {
logger.info("连接超时:" + e);
throw new FroadException(Constants.RESULT_PROCESSING,"连接超时!");
} catch (IOException e) {
logger.info("发生网络异常:" + e);
throw new FroadException(Constants.RESULT_FAIL,"发生网络异常!");
} catch(Exception e) {
logger.info("发生异常:" + e);
throw new FroadException(Constants.RESULT_FAIL,"发生异常!");
} finally {
postMethod.releaseConnection();
}
}
public static byte[] InputStreamToByte(InputStream is) throws IOException {
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
int ch;
while ((ch = is.read()) != -1) {
bytestream.write(ch);
}
byte imgdata[] = bytestream.toByteArray();
bytestream.close();
return imgdata;
}
}
- 浏览: 267118 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (187)
- spring (10)
- jquery (14)
- js (18)
- java (44)
- freemarker (7)
- 框架介绍 (1)
- tomcat (4)
- oracle (7)
- 喜欢的诗文 (4)
- linux (19)
- nokia (1)
- 那些事 (1)
- apache (3)
- dom4j (1)
- SOA (1)
- 企业架构 (2)
- baidu (1)
- svn (1)
- 测试 (4)
- liunx (0)
- memcahce (1)
- mysql (25)
- maven (4)
- 推广 (1)
- 网络 (1)
- vpn (1)
- drools (1)
- mongodb (1)
- redis (3)
- xlightweb (1)
- wifi (1)
- 学习资料 (1)
- git (1)
- 系统设计 (1)
- springboot (1)
- 自考 (0)
最新评论
-
zuo_qin_bo:
if(df==null){ //这个地方并发多的情况 ...
ThreadLocal解决dateFormat多线程错误 -
kongnan93:
好文!赞一个!!!!
jquery blockUI 居中显示 -
cxc_110928:
如果加上不能出现连续的数字或者字母 如 1234 abcd ...
用java 匹配一个数字和字母密码的正则表达式 -
wzwahl36:
http://www.atool.org/json2javab ...
JSON和JAVA的POJO的相互转换
发表评论
-
折半查找法
2019-06-17 18:11 374public static void main(String[ ... -
js 加密 java解密
2017-12-05 16:27 890https://github.com/noisyle/cr ... -
java工程师成长之路
2017-03-04 17:43 589一、基础篇 1.1 JVM 1.1.1. J ... -
java 启动jar
2017-03-04 15:40 1655#!/bin/sh PRG="$0&qu ... -
ThreadLocal解决dateFormat多线程错误
2016-09-19 17:44 2173出处 http://www.blogjava.net/ki ... -
设计模式
2016-06-02 17:11 489http://www.cnblogs.com/xing9010 ... -
list分页
2016-05-11 09:56 406//分批保存数据 if(null!=aassetO ... -
根据输入执行代码块
2015-05-11 17:25 693/** * f-road.com Inc. * Copyrig ... -
java装饰器模式
2015-03-17 18:00 861java装饰器模式 意图:动态的将责任附加到对象上什么 ... -
java适配器模式
2015-03-17 17:54 650定义:属于结构型模式,其主要作用是将一个类的接口转换成客户 ... -
Java垃圾回收机制
2015-02-04 09:43 743垃圾收集GC(Garbage Coll ... -
jvisualvm结合jstatd进行远程监控
2015-01-27 16:17 856jvisualvm是Jdk自带的,具体点,据说是jdk1 ... -
最佳线程数总结
2015-01-26 11:53 0最佳线程数: 性能压 ... -
线程dump
2015-01-26 11:19 0Java 的线程 线程是指 ... -
几种阻塞队列
2015-01-26 11:11 0转自:http://blog.csdn.net/yydcj/ ... -
线程池的原理及实现
2015-01-26 10:53 7081、线程池简介: ... -
线程同步通信技术-wait notify 用法
2014-10-22 20:58 706/** * * <pre> * 子线程 ... -
Cisco VPN Client 442
2014-10-18 21:17 162典型的Cisco VPN Client 442 错误,之前的 ... -
JDK安装
2014-10-18 15:15 749学习Java 开发的第一步就是构建开发环境,JDK(Java ... -
java中的IO整理
2014-09-14 14:52 820写在前面:本文章基本覆盖了java IO的全部内容,java ...
相关推荐
地级市GDP及产业结构数据-最新.zip
2006-2023年上市公司资产误定价Misp数据集(4.9万样本,含原始数据、代码及结果,最新).zip
本文对两大主流FPGA厂商的从串配置模式(Altera:Passive Serial Mode;Xilinx:Slave Serial Mode)进行了描述,并指出了主要的不同之处。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
R语言高级建模课程全集-最新整理.zip
内容概要:本文档展示了使用 Python绘制一个三维爱心的具体方法与步骤。 适用人群:适合对Python编程语言有一定了解,并且希望学习如何完成复杂图像渲染的研究者或开发者。 使用场景及目标:本项目适用于教学环境或是个人兴趣爱好,能够帮助读者更好地掌握三维图形编程技巧以及了解隐函数作图的基本原理。
该文档为核心配置实验思路,在实验中有不懂的请参考该思路
四大政策效应评价方法全集-最新.zip
该实验为核心配置实验,与下一个采用其不同的方法进行配置,其核心思路一样,顺序略有差异,请大家进行对比反复琢磨
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
单基因生物信息学分析视频教程-完整版最新.zip
在现代工业自动化和电动汽车领域,永磁同步电机(PMSM)因其高效率、高性能和紧凑设计而备受青睐。本文将详细介绍如何在Simulink中实现PMSM的控制,包括矢量控制(FOC)策略的实现,以及必要的代码示例,旨在为工程师和研究者提供实用的指导。 一、PMSM控制概述 永磁同步电机(PMSM)以其高功率密度、高效率和优异的动态响应而广泛应用于工业和汽车领域。在Simulink中实现PMSM控制,通常采用矢量控制(Field-Oriented Control, FOC)策略,该策略通过磁场定向控制实现电机转矩和速度的精确控制。 二、PMSM数学模型与Simulink实现 PMSM的数学模型包括电压方程、磁链方程和转矩方程。在Simulink中,我们可以通过构建相应的模块来实现这些方程。 1. PMSM数学模型 电压方程: u d = R s i d − ω e L q i q + L d d i d d t + ω e ψ f u d =Rsid−ω e L q iq+
2000-2020年中国海洋统计年鉴-最新数据发布.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
安慰剂检验代码与数据文章-最新研究成果.zip
VB+ACCESS学生公寓管理系统(源代码+系统)
职业规划(1).zip
网络办公系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
地级市进出口贸易及外资利用数据(297城)-最新.zip
Jupyter-Notebook