疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

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