package com.erp.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
/**
*
* 类: ResponseUtil <br>
* 描述: 响应返回数据的工具类(用于rest服务). <br>
* 作者: administrator <br>
* 时间: 2014-11-21 上午10:56:39
*/
public class ResponseUtil {
private static Logger logger = Logger.getLogger(ResponseUtil.class);
private static HttpURLConnection getConnection(URL url, String method,
String ctype) throws IOException {
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod(method);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Accept", "text/xml,text/javascript");
conn.setRequestProperty("User-Agent", "getop");
conn.setRequestProperty("Content-Type", ctype);
return conn;
}
private static boolean areNotEmpty(String... values) {
boolean result = true;
if (values == null || values.length == 0) {
result = false;
} else {
for (String value : values) {
result &= !isEmpty(value);
}
}
return result;
}
private static boolean isEmpty(String value) {
int strLen;
if (value == null || (strLen = value.length()) == 0) {
return true;
}
for (int i = 0; i < strLen; i++) {
if ((Character.isWhitespace(value.charAt(i)) == false)) {
return false;
}
}
return true;
}
private static String buildQuery(Map<String, String> params, String charset)
throws IOException {
if (params == null || params.isEmpty()) {
return null;
}
StringBuilder query = new StringBuilder();
Set<Entry<String, String>> entries = params.entrySet();
boolean hasParam = false;
for (Entry<String, String> entry : entries) {
String name = entry.getKey();
String value = entry.getValue();
// 忽略参数名或参数值为空的参数
if (areNotEmpty(name, value)) {
if (hasParam) {
query.append("&");
} else {
hasParam = true;
}
query.append(name).append("=")
.append(URLEncoder.encode(value, charset));
}
}
return query.toString();
}
/**
* 执行HTTP POST请求。
*
* @param url
* 请求地址
* @param params
* 请求参数
* @param charset
* 字符集,如UTF-8, GBK, GB2312
* @return 响应字符串
* @throws IOException
*/
public static String doPost(String url, Map<String, String> params)
throws IOException {
HttpURLConnection conn = null;
OutputStream out = null;
InputStream in = null;
String rsp = null;
String charset = "UTF-8";
try {
String ctype = "application/x-www-form-urlencoded;charset="
+ charset;
conn = getConnection(new URL(url), "POST", ctype);
out = conn.getOutputStream();
if (params != null) {
String query = buildQuery(params, charset);
out.write(query.getBytes(charset));
}
in = conn.getInputStream();
rsp = getResponseAsString(in,
getResponseCharset(conn.getContentType()));
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
if (conn != null) {
conn.disconnect();
}
}
return rsp;
}
private static String getResponseAsString(InputStream in, String charset)
throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(in,
charset));
StringWriter writer = new StringWriter();
char[] chars = new char[512];
int count = 0;
while ((count = reader.read(chars)) > 0) {
writer.write(chars, 0, count);
}
return writer.toString();
}
private static String getResponseCharset(String ctype) {
String charset = "UTF-8";
if (!isEmpty(ctype)) {
String[] params = ctype.split(";");
for (String param : params) {
param = param.trim();
if (param.startsWith("charset")) {
String[] pair = param.split("=", 2);
if (pair.length == 2) {
if (!isEmpty(pair[1])) {
charset = pair[1].trim();
}
}
break;
}
}
}
return charset;
}
/**
* 读取网络资源
*
* @throws IOException
*/
public static String readHttpResource(String url, Map<String, String> param)
throws IOException {
HttpURLConnection httpConn = null;
BufferedReader rd = null;
try {
StringBuilder sb = new StringBuilder();
StringBuilder params = new StringBuilder();
params.append("?");
Set<String> keys = param.keySet();
for (String key : keys) {
params.append(key);
params.append("=");
params.append(param.get(key));
params.append("&");
}
params.deleteCharAt(params.length() - 1);
URL realUrl = new URL(url + params.toString());
httpConn = (HttpURLConnection) realUrl.openConnection();
int responseCode = httpConn.getResponseCode();
if (responseCode == 200) {
rd = new BufferedReader(new InputStreamReader(
httpConn.getInputStream(), "gbk"));
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
return sb.toString();
}
} catch (IOException e) {
logger.error("url is :" + url);
throw e;
} finally {
if (rd != null)
try {
rd.close();
} catch (Exception e) {
}
if (httpConn != null)
try {
httpConn.disconnect();
} catch (Exception e) {
}
}
return null;
}
/**
* 读取网络资源 get 方式
*
* @throws IOException
*/
public static String readHttpResource(String url,
Map<String, String> param, String charset) throws IOException {
HttpURLConnection httpConn = null;
BufferedReader rd = null;
try {
StringBuilder sb = new StringBuilder();
StringBuilder params = new StringBuilder("");
if (param != null) {
params.append("?");
Set<String> keys = param.keySet();
for (String key : keys) {
params.append(key);
params.append("=");
params.append(param.get(key));
params.append("&");
}
params.deleteCharAt(params.length() - 1);
}
URL realUrl = new URL(url + params.toString());
httpConn = (HttpURLConnection) realUrl.openConnection();
int responseCode = httpConn.getResponseCode();
if (responseCode == 200) {
rd = new BufferedReader(new InputStreamReader(
httpConn.getInputStream(), charset));
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
return sb.toString();
}
} catch (IOException e) {
throw e;
} finally {
if (rd != null)
try {
rd.close();
} catch (Exception e) {
}
if (httpConn != null)
try {
httpConn.disconnect();
} catch (Exception e) {
}
}
return null;
}
/**
* 检测字符串
*
* @param value
* @return
*/
public static boolean checkString(String value) {
if (value != null && !"".equals(value)) {
return true;
}
return false;
}
public static void responseText(HttpServletResponse response, String result) {
responseText(response, result, null);
}
/**
* ajax相应
*
* @param response
* @param result
* @param callback
*/
public static void responseText(HttpServletResponse response,
String result, String callback) {
// 指定内容类型
response.setContentType("text/html;charset=UTF-8");
// 禁止缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
PrintWriter out = null;
try {
if (result == null) {
result = "";
}
out = response.getWriter();
if (callback != null && !"".equals(callback))
out.print(callback + "(" + result + ")");
else
out.print(result);
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
}
}
}
相关推荐
业务管理————业务管理是小额贷款业务管理系统的核心功能,实现从项目 立项、受理、调查、审查、审批、上会决策、合同、放款、贷后监管、还款跟踪、结清、档案管理等全过程动态管理;可拓展至其他投资理财、担保...
【小额贷款综合业务管理系统】是金蝶国际软件集团有限公司为应对...通过采用金蝶的小额贷款综合业务管理系统,小额贷款公司可以有效地降低成本,提升服务质量,优化风控机制,从而更好地适应市场竞争,实现可持续发展。
小额贷款业务管理系统是专门为了适应金融行业中小额贷款业务需求而设计的综合信息化管理平台。该系统在设计上遵循了关于小额贷款公司试点的指导意见和管理实施细则,结合金融企业财务规划,对小额信贷行业的金融监管...
标题中的“贷款借钱平台 贷款源码 小额贷款系统 卡卡贷源码 小额贷款源码 贷款平台.zip”表明这是一个关于金融借贷平台的软件源代码压缩包,主要涵盖的内容是小额贷款系统的源代码,其中特别提到了“卡卡贷源码”。...
标签进一步揭示了软件的功能和应用场景:“免费贷款系统”、“免费小贷系统”表明这是一款适用于小型借贷机构或个人的贷款管理工具;“信贷软件”和“信贷管理系统”强调其在信贷业务中的核心作用;“贷款软件”则是...
【标题】"贷款借钱平台 贷款源码 小额贷款系统 卡卡贷源码 小额贷款源码 贷款平台" 涉及的核心知识点主要围绕金融技术(FinTech)中的在线贷款系统开发,特别是针对小额贷款业务的源代码实现。这种源码是构建一个...
小额借贷贷款系统通常由前端用户界面、后台管理系统、风险评估模型、支付接口和数据存储等多个模块构成。前端界面主要负责用户交互,包括借款申请、还款查询等功能;后台管理系统则涉及审批流程、用户管理、贷款产品...
【立刻贷现金贷小额贷款手机贷款源码】是一个用于构建网络贷款平台的核心代码库,它包含了实现小额现金贷款业务的关键功能和逻辑。此类源码通常由专业开发者或开发团队编写,用于快速搭建一个能够处理用户申请、风险...
在这个贷款系统中,H5可能用于构建用户友好的界面,提供流畅的页面过渡效果,以及适应不同设备的响应式设计。同时,H5还允许数据在客户端和服务器之间更高效地交互,提升系统的性能和用户体验。 将源码封装成APP,...
本文将详细讲解“小额贷款网络贷款系统源码修复版”及其相关知识点,这是一款可以被打包成APP的应用程序,主要用于学习和研究目的。源码是软件开发的基础,它揭示了程序的内部工作原理,使得开发者能够理解和修改...
这类系统旨在解决小额贷款业务中的审批、发放、管理、回收等环节,提高工作效率,降低风险,增强服务质量和客户满意度。 1. 方案简述: 小额贷款管理系统方案的目标是通过集成化的信息技术,提供一个全面的业务流程...
小额贷款公司会计科目表是一种重要的会计工具,用于记录和管理小额贷款公司的财务活动。本表格共分为两个部分:资产类和负债类。每个科目都有其特定的核算项目和定义,用于记录和管理小额贷款公司的财务活动。 资产...
小额信贷管理系统需要有高效的数据处理能力和快速的响应速度,以满足大量用户的同时访问需求。 1.4 输入要求 小额信贷管理系统需要能够输入客户信息、贷款申请信息、贷款审批信息等。 1.5 输出要求 小额信贷管理...
《青年创业小额贷款数据管理系统使用手册》是一份详细指导文档,旨在帮助用户理解和操作青年创业小额贷款数据管理系统。这个系统由团中央农村青年工作部开发,主要服务于青年创业贷款的数据管理、维护、记录、检索和...
金融行业软件试用版
这个系统由团中央农村青年工作部开发,主要用于处理和管理青年创业小额贷款的相关数据,提供高效便捷的数据录入、保护、统计、检索和共享功能。 系统的核心特点是其数据收集的一线性,即数据由承担工作任务的基层团...
小额贷款管理系统是一种专为小型金融机构或信贷机构设计的信息化解决方案,旨在高效、安全地管理贷款审批、发放、还款等业务流程。以下是对该解决方案的详细说明: 1. 方案简述: 小额贷款管理系统的主要目的是提高...
基于贵州小额贷款综合业务管理系统的知识点总结 小额贷款公司发展概况 小额贷款公司的发展可以分为几个阶段,包括初创期、快速发展期、高效运营期和成熟期。在每个阶段,小额贷款公司都面临着不同的挑战和机遇。...
小额贷款管理系统解决方案.doc