java httpclient 包_如何使用HttpClient包实现JAVA发起HTTP请求?

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 package com.sunyard.util;

2

3 import com.sunyard.constans.Constants;

4

5 import org.apache.commons.httpclient.*;

6 import org.apache.commons.httpclient.methods.GetMethod;

7 import org.apache.commons.httpclient.methods.PostMethod;

8 import org.apache.commons.httpclient.methods.RequestEntity;

9 import org.apache.commons.httpclient.methods.StringRequestEntity;

10 import org.apache.commons.httpclient.params.HttpConnectionManagerParams;

11 import org.apache.commons.lang.StringUtils;

12 import org.apache.logging.log4j.LogManager;

13 import org.apache.logging.log4j.Logger;

14

15 import java.io.IOException;

16 import java.net.URL;

17

18 public class HTTPUtils {

19

20 private final static Logger logger = LogManager.getLogger(Constants.LOGNAME);

21

22 private final static String OPERATER_NAME = "【HTTP操作】";

23

24 private final static int SUCCESS = 200;

25

26 private final static String UTF8 = "UTF-8";

27

28 private HttpClient client;

29

30 private static HTTPUtils instance = new HTTPUtils();

31

32 /**

33 * 私有化构造器

34 */

35 private HTTPUtils() {

36

37 HttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();

38 HttpConnectionManagerParams params = httpConnectionManager.getParams();

39 params.setConnectionTimeout(5000);

40 params.setSoTimeout(20000);

41 params.setDefaultMaxConnectionsPerHost(1000);

42 params.setMaxTotalConnections(1000);

43 client = new HttpClient(httpConnectionManager);

44 client.getParams().setContentCharset(UTF8);

45 client.getParams().setHttpElementCharset(UTF8);

46 }

47

48 /**

49 * get请求

50 */

51 public static String get(URL url) {

52 return instance.doGet(url);

53 }

54

55 private String doGet(URL url) {

56 long beginTime = System.currentTimeMillis();

57 String respStr = StringUtils.EMPTY;

58 try {

59 logger.info(OPERATER_NAME + "开始get通信,目标host:" + url);

60 HttpMethod method = new GetMethod(url.toString());

61 // 中文转码

62 method.getParams().setContentCharset(UTF8);

63 try {

64 client.executeMethod(method);

65 } catch (HttpException e) {

66

67 logger.error(new StringBuffer("发送HTTP GET给\r\n").append(url)

68 .append("\r\nHTTP异常\r\n"), e);

69 } catch (IOException e) {

70

71 logger.error(new StringBuffer("发送HTTP GET给\r\n").append(url)

72 .append("\r\nIO异常\r\n"), e);

73 }

74 if (method.getStatusCode() == SUCCESS) {

75 respStr = method.getResponseBodyAsString();

76 }

77 // 释放连接

78 method.releaseConnection();

79

80 logger.info(OPERATER_NAME + "通讯完成,返回码:" + method.getStatusCode());

81 logger.info(OPERATER_NAME + "返回内容:" + method.getResponseBodyAsString());

82 logger.info(OPERATER_NAME + "结束..返回结果:" + respStr);

83 } catch (Exception e) {

84 logger.info(OPERATER_NAME, e);

85 }

86 long endTime = System.currentTimeMillis();

87 logger.info(OPERATER_NAME + "共计耗时:" + (endTime - beginTime) + "ms");

88

89 return respStr;

90 }

91

92

93 /**

94 * POST请求

95 */

96 public static String post(URL url, String content) {

97 return instance.doPost(url, content);

98 }

99

100 private String doPost(URL url, String content) {

101 long beginTime = System.currentTimeMillis();

102 String respStr = StringUtils.EMPTY;

103 try {

104 logger.info(OPERATER_NAME + "开始post通信,目标host:" + url.toString());

105 logger.info("通信内容:" + content);

106 PostMethod post = new PostMethod(url.toString());

107 RequestEntity requestEntity = new StringRequestEntity(content, "application/json;charse=UTF-8", UTF8);

108 post.setRequestEntity(requestEntity);

109 // 设置格式

110 post.getParams().setContentCharset(UTF8);

111

112 client.executeMethod(post);

113 if (post.getStatusCode() == SUCCESS) {

114 respStr = post.getResponseBodyAsString();

115 }

116

117 logger.info(OPERATER_NAME + "通讯完成,返回码:" + post.getStatusCode());

118 logger.info(OPERATER_NAME + "返回内容:" + post.getResponseBodyAsString());

119 logger.info(OPERATER_NAME + "结束..返回结果:" + respStr);

120 post.releaseConnection();

121

122 } catch (Exception e) {

123 logger.error(OPERATER_NAME, e);

124 }

125 long endTime = System.currentTimeMillis();

126 logger.info(OPERATER_NAME + "共计耗时:" + (endTime - beginTime) + "ms");

127 return respStr;

128 }

129

130 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值