package com.csii.ibs.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.csii.ibs.common.CHECKMSG;
import com.csii.pe.validation.ValidationRuntimeException;
public class ConnectUtil {
/**
* HttpURLConnection的post请求方式
* @param url
* 请求地址
* @param params
* 请求参数 json格式
* @param charset
* 编码
* @return
* @throws Exception
*/
public static JSONObject doPostJson(String url, String params, String charset) throws Exception {
try {
// 建立连接
URL realURL = new URL(url);
HttpURLConnection conn = (HttpURLConnection) realURL.openConnection();
//设置连接属性
// 设定请求的方法为"POST",默认是GET
conn.setRequestMethod("POST");
// 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在 http正文内,因此需要设为true, 默认情况下是false;
conn.setDoOutput(true);
// 设置是否从httpUrlConnection读入,默认情况下是true;
conn.setDoInput(true);
// Post 请求不能使用缓存
conn.setUseCaches(false);
// 设置请求属性
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Charset", charset);
// 设定传送的内容类型是json,utf-8字符编码
conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
// 设置接收类型否则返回415错误
// conn.setRequestProperty("accept","*/*")此处为暴力方法设置接受所有类型,以此来防范返回415;
conn.setRequestProperty("accept", "application/json");
// 往服务器里面发送数据
if (params != null && params.length() > 0) {
byte[] writebytes = params.getBytes();
// 设置文件长度
conn.setRequestProperty("Content-Length", String.valueOf(writebytes.length));
// 建立输出流,并写入数据
OutputStream outwritestream = conn.getOutputStream();
outwritestream.write(params.getBytes());
outwritestream.flush();
outwritestream.close();
}
// 获得响应状态
int retCode = conn.getResponseCode();
if (retCode == 200) {
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
String resultString = "";
while ((line = reader.readLine()) != null) {
resultString += line;
}
JSONObject jsonObject = JSON.parseObject(resultString);
return jsonObject;
} else {
throw new ValidationRuntimeException(CHECKMSG.VALIDATION_ERRORMSG,
new Object[] { "连接xx失败!xx返回:" + String.valueOf(retCode) });
}
} catch (MalformedURLException e) {
e.printStackTrace();
throw new ValidationRuntimeException(CHECKMSG.VALIDATION_ERRORMSG,
new Object[] { "连接xx失败!xx无法连接MalformedURLException" });
} catch (IOException e) {
e.printStackTrace();
throw new ValidationRuntimeException(CHECKMSG.VALIDATION_ERRORMSG,
new Object[] { "连接xx失败!xx无法连接IOException" });
}
}
}