javaがhttp get要求を送信する2つの方法。

2122 ワード

長話はさておき,むだ話はさておき
一、第一の方式は、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は正常に訪問しています。また、他のプリプロセッサに変えても正常にデータを得ることができます。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。