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