import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
public class HttpRequestUtil {
public static String sendJsonWithHttp(String surl, String json, int connectTimeout, int readTimeout) throws Exception {
HttpURLConnection conn = null;
DataOutputStream out = null;
InputStream is = null;
ByteArrayOutputStream bos = null;
try {
URL url = new URL(surl);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
conn.setRequestMethod("POST");// 提交模式
conn.setConnectTimeout(connectTimeout);// 连接超时单位毫秒 //
conn.setReadTimeout(readTimeout);// 读取超时 单位毫秒
conn.setDoOutput(true);// 是否输入参数
conn.setDoInput(true);
conn.setUseCaches(false);
conn.connect();
out = new DataOutputStream(conn.getOutputStream());
out.write(json.getBytes("UTF-8"));
out.flush();
is = conn.getInputStream();
bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int i = -1;
while ((i = is.read(b)) != -1) {
bos.write(b, 0, i);
}
String returnMsg = new String(bos.toByteArray(), "utf-8");
return returnMsg;
} finally {
try {
if (bos != null) {
bos.close();
}
} catch (Exception e) {
}
try {
if (is != null) {
is.close();
}
} catch (Exception e) {
}
try {
if (out != null) {
out.close();
}
} catch (Exception e) {
}
try {
if (conn != null) {
conn.disconnect();
}
} catch (Exception e) {
}
}
}
/*
* final static String PROTOCOL_NAME = "https";
*
* public static String sendJsonWithHttps(String surl, String json) throws
* Exception { HttpClient client = new HttpClient();
* client.getParams().setContentCharset("UTF-8"); Protocol httpProtocol =
* new Protocol(PROTOCOL_NAME, new SSLProtocolSocketFactory(false), 443);
* Protocol.registerProtocol(PROTOCOL_NAME, httpProtocol); PostMethod post =
* new PostMethod(surl); post.setRequestHeader("Content-Type",
* "application/json"); RequestEntity requestEntity = new
* ByteArrayRequestEntity(json.getBytes("utf-8"));
* post.setRequestEntity(requestEntity); client.executeMethod(post);
* InputStream in = post.getResponseBodyAsStream(); byte[] buf = new
* byte[512]; ByteArrayOutputStream baos = new ByteArrayOutputStream(); do {
* int n = in.read(buf); if (n > 0) { baos.write(buf, 0, n); } else if (n <=
* 0) { break; } } while (true); return baos.toString(); }
*/
public static String doGetRequest(String surl, Map<String, String> dataMap, int connectTimeout, int readTimeout) throws Exception {
HttpURLConnection conn = null;
try {
String parameterData = "";
for (String key : dataMap.keySet()) {
if (StringUtil.notNullorEmpty(key) && StringUtil.notNullorEmpty(dataMap.get(key))) {
parameterData += URLEncoder.encode(key, "UTF-8") + "=" + URLEncoder.encode(dataMap.get(key), "UTF-8") + "&";
}
}
if (parameterData.length() > 1) {
parameterData = parameterData.substring(0, parameterData.length() - 1);
}
URL url = new URL(surl + "?" + parameterData);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");// 提交模式
conn.setConnectTimeout(connectTimeout);// 连接超时单位毫秒 //
conn.setReadTimeout(readTimeout);// 读取超时 单位毫秒
conn.setDoOutput(true);// 是否输入参数
conn.setDoInput(true);
conn.setUseCaches(false);
conn.connect();
InputStream is = conn.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int i = -1;
while ((i = is.read(b)) != -1) {
bos.write(b, 0, i);
}
conn.disconnect();
String returnMsg = new String(bos.toByteArray(), "utf-8");
return returnMsg;
} finally {
if (conn != null) {
conn.disconnect();
}
}
}
}