java发送http get请求的两种方法(总结)

一、第一种方式,通过HttpClient方式,代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

public static String httpGet(String url, String charset)

   throws HttpException, IOException {

  String json = null;

  HttpGet httpGet = new HttpGet();

  // 设置参数

  try {

   httpGet.setURI(new URI(url));

  } catch (URISyntaxException e) {

   throw new HttpException("请求url格式错误。"+e.getMessage());

  }

  // 发送请求

  HttpResponse httpResponse = client.execute(httpGet);

  // 获取返回的数据

  HttpEntity entity = httpResponse.getEntity();

  byte[] body = EntityUtils.toByteArray(entity);

  StatusLine sL = httpResponse.getStatusLine();

  int statusCode = sL.getStatusCode();

  if (statusCode == 200) {

   json = new String(body, charset);

   entity.consumeContent();

  } else {

   throw new HttpException("statusCode="+statusCode);

  }

  return json;

}

二、第二种方式,通过流的形式,贴代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

/**

  * 发送http get请求

  

  * @param getUrl

  * @return

  */

  public String sendGetRequest(String getUrl)

  {

   StringBuffer sb = new StringBuffer();

   InputStreamReader isr = null;

   BufferedReader br = null;

   try

   {

     URL url = new URL(getUrl);

     URLConnection urlConnection = url.openConnection();

     urlConnection.setAllowUserInteraction(false);

     isr = new InputStreamReader(url.openStream());

     br = new BufferedReader(isr);

     String line;

     while ((line = br.readLine()) != null)

     {

      sb.append(line);

     }

   }

   catch (IOException e)

   {

     e.printStackTrace();

   }

   finally

   {

     fileOperator.closeResources(isr, br);

   }

   return sb.toString();

  }

}

这两种实现方式不同,怎么使用看个人喜好吧,不过我在项目开发过程中,使用流的方式部署在预发机(linux机器)上会出现返回null的情况,但是本地windows却正常访问,而且,换另外一台预发机也能正常获取数据,目前还没有研究出个所以然。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值