java如何封装post请求,java使用httpclient封装post请求

我们程序员在项目开发过程中,经常用到接口,目前比较流行httpclient  技术。以下是我之前封装的httpclient的post请求 ,希望对大家有所帮助:

精简代码如下:可以直接复制使用public static String postTDH(String url, String body, String mimeType,

String charset, Integer connTimeout, Integer readTimeout) throws IOException, GeneralSecurityException

{

String result = "";

HttpClient client = null;

HttpPost post = new HttpPost(url);

try {

/*HttpEntity entity = new StringEntity(body, ContentType.create(

mimeType, charset));

post.setEntity(entity);*/

StringEntity s = new StringEntity(body.toString(),

Charset.forName("utf-8"));

s.setContentEncoding("UTF-8");

post.setEntity(s);

// 设置参数

Builder customReqConf = RequestConfig.custom();

if (connTimeout != null) {

customReqConf.setConnectTimeout(connTimeout);

}

if (readTimeout != null) {

customReqConf.setSocketTimeout(readTimeout);

}

post.setConfig(customReqConf.build());

HttpResponse res;

if (url.startsWith("https")) {

// 执行 Https 请求.

client = createSSLInsecureClient();

res = client.execute(post);

} else {

// 执行 Http 请求.

client = HttpClientUtils.client;

res = client.execute(post);

}

int statusCode = res.getStatusLine().getStatusCode();

System.out.println("返回码:"+statusCode);

//result = IOUtils.toString(res.getEntity().getContent(), charset);

result = UnicodeToZ.decodeUnicode(EntityUtils

.toString(res.getEntity()));

logger.info("################发送报文内容:################");

logger.info(body);

logger.info("################返回报文内容:################");

logger.info(result);

}finally {

post.releaseConnection();

if (url.startsWith("https") && client != null

&& client instanceof CloseableHttpClient) {

((CloseableHttpClient) client).close();

}

}

return result;

}

Integer connTimeout, Integer readTimeout;接口超时时间设置UnicodeToZ.decodeUnicode(EntityUtils .toString(res.getEntity()));返回的报文进行中文装换(选择性使用)public class UnicodeToZ {

public static String decodeUnicode(String theString) {

char aChar;

int len = theString.length();

StringBuffer outBuffer = new StringBuffer(len);

for (int x = 0; x < len;) {

aChar = theString.charAt(x++);

if (aChar == '\\') {

aChar = theString.charAt(x++);

if (aChar == 'u') {

// Read the xxxx

int value = 0;

for (int i = 0; i < 4; i++) {

aChar = theString.charAt(x++);

switch (aChar) {

case '0':

case '1':

case '2':

case '3':

case '4':

case '5':

case '6':

case '7':

case '8':

case '9':

value = (value << 4) + aChar - '0';

break;

case 'a':

case 'b':

case 'c':

case 'd':

case 'e':

case 'f':

value = (value << 4) + 10 + aChar - 'a';

break;

case 'A':

case 'B':

case 'C':

case 'D':

case 'E':

case 'F':

value = (value << 4) + 10 + aChar - 'A';

break;

default:

throw new IllegalArgumentException(

"Malformed \\uxxxx encoding.");

}

}

outBuffer.append((char) value);

} else {

if (aChar == 't')

aChar = '\t';

else if (aChar == 'r')

aChar = '\r';

else if (aChar == 'n')

aChar = '\n';

else if (aChar == 'f')

aChar = '\f';

outBuffer.append(aChar);

}

} else

outBuffer.append(aChar);

}

return outBuffer.toString();

}

}改转换方法  大家可以详细研究。有不明白的地方大家可以留言,博主会及时帮你解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值