Java 使用Httpclient构建带有用户名与密码验证的get请求

构造普通http请求

对于不需要用户名与密码认证的连接,一般只需要构造好URIBuilder随后发起get请求即可获得返回信息,具体代码如下

CloseableHttpClient client = HttpClients.createDefault();
URIBuilder uriBuilder = new URIBuilder("http://" + ip_addr + ":" + port);
HttpGet httpGet = new HttpGet(uriBuilder.build());
CloseableHttpResponse response = client.execute(httpGet);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
      HttpEntity entity = response.getEntity();
      result = EntityUtils.toString(entity);
      response.close();
      client.close();
}

构造带有认证的Http请求

当请求需要用户名与密码的认证时,需要构造一个httpclient包下的UsernamePasswordCredentials对象,通过这样一个验证对象来提醒这是一个带有验证的请求。在实际操作的过程中,往往需要一并设置请求头user-agent,不然也可能会返回401状态码,以下是代码示例。

HttpClient httpClient = new HttpClient();
//需要验证
org.apache.commons.httpclient.UsernamePasswordCredentials creds = new UsernamePasswordCredentials(this.username, this.password);
httpClient.getState().setCredentials(AuthScope.ANY, creds);
//设置http头
List<Header> headers = new ArrayList<Header>();headers.add(new Header("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"));
httpClient.getHostConfiguration().getParams().setParameter("http.default-headers", headers);
//开始连接
GetMethod method = new GetMethod("http://" + ip_addr + ":" + port);
method.setDoAuthentication(true);
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,new DefaultHttpMethodRetryHandler(3, false));
try {
      int statusCode = httpClient.executeMethod(method);
      if (statusCode != HttpStatus.SC_OK) {
      System.out.println("Method failed code=" + statusCode + ": " + method.getStatusLine());
     } else {
      InputStream inputStream = method.getResponseBodyAsStream();
      BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
      String s;
      StringBuffer sb = new StringBuffer();
      while ((s = br.readLine()) != null) {
      sb.append(s + "\n");
      }
      result = sb.toString();
      System.out.println(new String(method.getResponseBody(), "utf-8"));
      }
      } finally {
        method.releaseConnection();
      }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值