使用httpclient发送get方法访问url并获取json字符串

static String generateParameters(Map<String,String>map){
		List<NameValuePair>list = Lists.newArrayList();
		for(String key : map.keySet()){
			list.add(new BasicNameValuePair(key, map.get(key)));
		}
		return URLEncodedUtils.format(list, Charset.defaultCharset());
	}

生成参数列表,参数以map的key-value形式传入,URLEncodeUtils.format会自动把参数以xx=xx&的形式连接起来,并且value还会被URLEncoder过

static URI generateUri(String finalUrl,String parameters) throws URISyntaxException{
		if(parameters == null){
			return new URI(finalUrl);
		}
		return new URI(finalUrl+"?"+parameters);
	}

生成uri,参数是url和参数列表,这里返回URI是为了能让思路更清晰

static CloseableHttpResponse connect(URI uri) throws ClientProtocolException, IOException{
		CloseableHttpClient client = HttpClients.createDefault();
		HttpGet get = new HttpGet(uri);
		return client.execute(get);
	}

发送http请求并返回response相应。调用了httpclient的方法

static String parseHttpResponse(CloseableHttpResponse response , Charset charset) throws UnsupportedOperationException, IOException{
		String line = null;
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), charset));
			line = reader.readLine();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(response != null)
				response.close();
		}
		return line;
	}

解析相应并获取正文字符串。参数是response和charset,这里传入response参数是为了可以在方法中关闭response而不用放到外面关闭,简化了操作。charset是为了匹配目标网站用的charset,不至于解析完毕后发现结果包含乱码。

 

分这几步其实就是一个增加代码复用度的思想,如果我把这些代码都写在一个方法中,那以后要改就会全盘修改代码,甚至修改调用该方法的方法,那觉得是一件很不好的事情。而用这种分部的方式,会让思路更清晰,代码耦合度更低,可以随时互相搭配着用,效率相对高。

如果不写在util里,也可以写在一个父类AbstractService里,以便service子类调用这些方法

转载于:https://my.oschina.net/wwwd/blog/685164

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值