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;
}
}
- 浏览: 259228 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 310public static void main(String[ ... -
js 加密 java解密
2017-12-05 16:27 797https://github.com/noisyle/cr ... -
java工程师成长之路
2017-03-04 17:43 547一、基础篇 1.1 JVM 1.1.1. J ... -
java 启动jar
2017-03-04 15:40 1597#!/bin/sh PRG="$0&qu ... -
ThreadLocal解决dateFormat多线程错误
2016-09-19 17:44 2122出处 http://www.blogjava.net/ki ... -
设计模式
2016-06-02 17:11 429http://www.cnblogs.com/xing9010 ... -
list分页
2016-05-11 09:56 368//分批保存数据 if(null!=aassetO ... -
根据输入执行代码块
2015-05-11 17:25 648/** * f-road.com Inc. * Copyrig ... -
java装饰器模式
2015-03-17 18:00 814java装饰器模式 意图:动态的将责任附加到对象上什么 ... -
java适配器模式
2015-03-17 17:54 611定义:属于结构型模式,其主要作用是将一个类的接口转换成客户 ... -
Java垃圾回收机制
2015-02-04 09:43 706垃圾收集GC(Garbage Coll ... -
jvisualvm结合jstatd进行远程监控
2015-01-27 16:17 805jvisualvm是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 6691、线程池简介: ... -
线程同步通信技术-wait notify 用法
2014-10-22 20:58 666/** * * <pre> * 子线程 ... -
Cisco VPN Client 442
2014-10-18 21:17 162典型的Cisco VPN Client 442 错误,之前的 ... -
JDK安装
2014-10-18 15:15 692学习Java 开发的第一步就是构建开发环境,JDK(Java ... -
java中的IO整理
2014-09-14 14:52 775写在前面:本文章基本覆盖了java IO的全部内容,java ...
相关推荐
行业分析模板--初学者必备gl.ppt
简介随着微信的普及,小视频的流行,我们设计一款基于微信小程序端的视频社交软件 + 后台管理系统作为自己专科毕业设计----秀视频-微信小程序端(短视频社交小程序,用户可以在小程序上发布自己的短视频 并且经过我们的平台加入滤镜或者背景音乐制作出独具特色的短视频。并实现了点赞、评论、下载、分享、转发等功能的小程序)---的后台管理系统,主要实现了人员的管理,短视频的管理,背景音乐的管理,登陆注册,权限验证,单点登陆等等。 从需求分析,功能设计,前端到后台,再到数据库的设计。一点点的积累,一点点的完善,预计小程序端+后台管理系统开发周期一个月(每天更新)。 对一个开发人员来说,如果想单纯的做出这些功能,其实并不难。 难的是对于这些功能细节的把控,项目整体的友好程度,用户的体验效果;对并发的考虑,对恶意请求,对流畅度这些细节的考虑等等。
基于matlab实现麦克风阵列的声源定位,四元十字阵的matlab仿真.rar
污水处理
混淆矩阵 检测茶叶中的杂质,并利用混淆矩阵计算出精确率和误判率 小技巧的设置 在train.py和train_eager.py文件下: 1、mosaic参数可用于控制是否实现Mosaic数据增强。 2、Cosine_scheduler可用于控制是否使用学习率余弦退火衰减。 3、label_smoothing可用于控制是否Label Smoothing平滑。
基于matlab实现的一种新型的配电网潮流计算,基于前推回代法,并附有10kv配电网数据,利用新的判别手段,成功解决配电网不收敛的问题.rar
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
行业报告
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于matlab实现的实现图像的平移,平移量应该可调(即用一个变量保存平移量),并显示对图像“view”的处理结果。 2.编程实现图像的缩放,缩放系数可调,分别用两个变量保存水平和垂直方向的缩放系数,并显示对图像“view”的处理结果。.rar
【项目资源】:基于VB+access实现抽奖系统(系统+论文+开题报告+外文翻译+封面+中英摘要+任务书+中期检查表) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。
ASP基于BBS系统开发与帐户安全保护的实现(源代码+设计说明书).zip
污水处理计算书
卷积神经网络 卷积神经网络_基于VGGNet实现的遥感图像分类算法
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
课程设计,污水处理设计方案
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于matlab实现的齿轮接触疲劳强度分析程序,机械设计中使用.rar
vue面试题30道经典
node-v6.1.0.tar