java发送http get请求的两种方式

  长话短说,废话不说

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

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;
}

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

  

    /**
    * 发送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却正常访问,而且,换另外一台预发机也能正常获取数据,目前还没有研究出个所以然。。。

补充:问题找到原因了,因为公司不管是测试环境机器还是正式环境机器,访问公网都是要权限审批的,因此当我去请求乐视时没有访问api.letvcloud.com公网的权限,权限开通后,问题解决,一切正常

  

  

原文地址:https://www.cnblogs.com/xiaoming0601/p/6904664.html