package test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URI;
import java.util.UUID;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.stereotype.Service;
/**
*
* @author Administrator
*
*/
@Service
public class HttpclientConnectUtil {
/**
* @param url
* @param body
* @param msgCode
* @param versionCode
* @param publicKey
* @return
*/
public String getResponse(String url, String body, String msgCode, String versionCode, String publicKey) {
byte[] bodyByte = new byte[0];
String returnMsg = "";
HttpURLConnection conn = null;
InputStream is = null;
try {
conn = (HttpURLConnection) new URI(url).toURL().openConnection();
if(versionCode.equals("0")) {
bodyByte = body.getBytes("UTF-8");
} else {
bodyByte = ClientCrypt.encrypt(body.getBytes("UTF-8"), publicKey);
}
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Accept-Charset", "UTF-8");
conn.setRequestProperty("Content-Type", GlobalInfo.CONTENT_TYPE);
conn.setRequestProperty("Msg", msgCode);
conn.setRequestProperty("uuid", UUID.randomUUID().toString());
conn.setRequestProperty("V", versionCode);
conn.setConnectTimeout(GlobalInfo.CONNECTTIMEOUT_NUMBER);
conn.setReadTimeout(GlobalInfo.READTIMEOUT_NUMBER);
conn.getOutputStream().write(bodyByte);
is = conn.getInputStream();
byte[] resp = toByteArray(is);
if(!versionCode.equals("0")) {
resp = ClientCrypt.decrypt(resp, publicKey);
}
returnMsg = new String(resp, "utf-8");
} catch (Exception e) {
throw new UpmException(msgCode,e);
} finally {
IOUtils.closeQuietly(is);
try{
if(null != conn) conn.disconnect();
}catch(Exception e) {}
}
return returnMsg;
}
/**
*
* @param url
* @param body
* @param msgCode
* @param versionCode
* @param publicKey
* @return
*/
public String getResponse2(String url, String body, String msgCode,String versionCode, String publicKey) {
String returnMsg = null;
CloseableHttpClient client = null;
byte[] bodyByte = new byte[0];
try {
if (versionCode.equals("0")) {
bodyByte = body.getBytes("UTF-8");
} else {
bodyByte = ClientCrypt.encrypt(body.getBytes("UTF-8"),publicKey);
}
client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Content-Type", GlobalInfo.CONTENT_TYPE);
httpPost.setHeader("Msg", msgCode);
httpPost.setHeader("uuid", UUID.randomUUID().toString());
httpPost.setHeader("V", versionCode);
ByteArrayEntity entity = new ByteArrayEntity(bodyByte);
httpPost.setEntity(entity);
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(GlobalInfo.READTIMEOUT_NUMBER)
.setConnectTimeout(GlobalInfo.CONNECTTIMEOUT_NUMBER)
.build();//
httpPost.setConfig(requestConfig);
HttpResponse response = client.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
byte[] resp = toByteArray(response.getEntity().getContent());
if (!versionCode.equals("0")) {
resp = ClientCrypt.decrypt(resp, publicKey);
}
returnMsg = new String(resp, "utf-8");
}
} catch (Exception e) {
throw new UpmException(msgCode, e);
} finally {
try {
if (client != null)
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return returnMsg;
}
public static byte[] toByteArray(InputStream input) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
copy(input, output);
return output.toByteArray();
}
public static int copy(InputStream input, OutputStream output) throws IOException {
long count = copyLarge(input, output);
if (count > 2147483647L) {
return -1;
}
return (int)count;
}
public static long copyLarge(InputStream input, OutputStream output) throws IOException {
byte[] buffer = new byte[4096];
long count = 0L;
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
count += n;
}
return count;
}
}
httpclient 传参请求
最新推荐文章于 2024-08-06 17:13:24 发布