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

网友投稿 362 2023-05-12


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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MyBatis动态SQL中的trim标签的使用方法
下一篇:判断类是否实现接口(怎么看接口的实现类)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~