Java 使用Httpclient构建带有用户名与密码验证的get请求_httpclient 用户名密码_富贵儿233的博客-程序员宝宝

技术标签: java  http  J2EE  开发语言  

构造普通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();
      }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43960713/article/details/125680843

智能推荐

开源软件有漏洞?我怎么知道?又该怎么办_VinFOSSIDce的博客-程序员宝宝

   “我使用的开源软件存在着安全漏洞的风险?我怎么知道。”这也许是许多使用开源软件的开发者所有的疑惑。    没错,许多开发者使用的开源软件都有安全漏洞风险提示,及漏洞补丁信息。只要保证开源软件的漏洞补丁保持在最近就可以避免其中的安全漏洞风险了。    然而,更新漏洞库却是一件很令人头疼的事情。在开源软件广泛应用到开发中的今天,一个项目的完成肯定有很大一部分开源代码的参与。那么传统人工的...

如何让Delphi程序启动自动“以管理员身份运行"_rznice的博客-程序员宝宝

如何让Delphi程序启动自动“以管理员身份运行"

由gradle版本引起的错误:Cannot resolve external dependency com.android.tools.build:gradle:3.6.0 问题解决_because no repositories are defined._liranke的博客-程序员宝宝

问题:在编译一个项目时(该项目在其它电脑上可以正常build),发生gradle错误提示,详细内容如下:A problem occurred configuring project ':app'.&gt; Could not resolve all artifacts for configuration ':app:classpath'. &gt; Cannot resolve external dependency com.android.tools.build:gradle:3..

项目引入中es7.4,并排出其他jar包引入的低版本es的jar包_lovesman的博客-程序员宝宝

1、common工程中引入高版本的jar包,并排出部分jar包。使用exclusion配置 &lt;!--导入了elasticsearch --&gt; &lt;dependency&gt; &lt;groupId&gt;org.elasticsearch.client&lt;/groupId&gt; &lt;artifactId&gt;elasticsearch-rest-high-level-client&lt;/artifactId&gt;

Activity四种启动模式及应用场景_activity使用场景_little-mouse的博客-程序员宝宝

面试的时候科大讯飞的一个面试官问我Activity的启动模式和具体的应用模式;我也一想是啊,平时不太注意,只知道有这几个启动模式,结果到了关键的时刻卡壳了,做个记录:一、Activity四种启动模式:(一)、基本描述standard:标准模式:如果在mainfest中不设置就默认standard;standard就是新建一个Activity就在栈中新建一个activity实例;si...

c语言corner函数,芯片Timing sign-off Corner理解_暗夜独舞春上雪的博客-程序员宝宝

Network电容:耦合电容:Couplingcapacitance=e*T/S表面电容:Surface capcitance=e*W/H边缘电容:Fringe capcitance决定容值的因素:介电常数:e线宽:W线厚:T线间距:S介电材料的厚度:H随着工艺进步,W, S, T逐代递减,表面电容跟随减小,耦合电容随之增加,耦合电容在总电容中占比增加,当线厚 T 一定时为了减少耦合电容要么...

随便推点

UnityThread子线程使用只能在主线程中调用的函数或Unity API_unity子线程_程序员正茂的博客-程序员宝宝

Unity的Socket网络编程中,为了防止程序卡死,一般使用多线程来监听端口,当收到来自客户端的消息时,需要显示在界面上。但是如果直接在子线程中操作Unity的界面或物体会报错。国外一个大神写了一个UnityThread类很好地解决了这个问题。紫色文字为谷歌翻译后的原文,个别地方作了修改。Unity是Thread不安全的,因此他们决定Thread通过添加一种机制在从另一个人使用其API时引发异常来使其无法从另一个人调用API Thread。这个问题已经被问了很多遍了,但是没有一个合适的解决方案

读透《华为数据之道》_傅一平的博客-程序员宝宝

这是傅一平的第361篇原创【提醒:公众号推送规则变了,如果您想及时收到推送,麻烦右下角点个在看,或者把本号置顶】正文开始很多年前阿里出了《大数据之路》一书,在数据技术层面给出了有价值的指...

Wpf 初学---01设计一个优美的注册界面_wpf 注册界面_卖栗子的嵩鼠的博客-程序员宝宝

1.实现效果(相关注释已写在代码中):(1)静态图:(2)动态图:2.(1)文件结构:(2)MainWindow.xaml代码:&lt;Window x:Class="RegisterPage.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

整理使用visjs生成关系拓扑图_vis关系图_这么近又那么远的博客-程序员宝宝

Html引入:https://unpkg.com/browse/[email protected]/dist/vis-network.min.jsnpm引入:npm install vis 在关系图的页面引入vis:import Vis from ‘vis’ 在html中定义容器:&lt;div id=”network_id”style=”height:800px”&gt; 在scr...

linux学习之路--Tomcat_萝卜C的博客-程序员宝宝

第一步:下载tomcat8对于无网络条件来说,需要安装文件交互软件,xftp 6 或者 MobaXterm,把优盘的里安装包copy进去就行,链接在下方我是链接:https://pan.baidu.com/s/12ugq0TQSTcjfZey2sWCOkA 我是提取码:ppto去官网下载最新版的tomcat8 路径http://tomcat.apache.org/下面...

推荐文章

热门文章

相关标签