很多情况下,公司的电脑是加入域的,而且上外网是要通过代理上网的,这总情况下使用httpclient访问外网时必须使用代理,并且要通过NTLM验证,所以需要在httpclient中使用NTLM协议。
关于NTLM,可以参考这里。 以下给出解决此问题的代码。
public static String getWithNTCredential(String url,boolean needProxy,int msTimeOut){ log.info("--get url:[" + url + "]"); String responseBody = null; HttpMethod getMethod = new GetMethod(url); if(msTimeOut>0) { getMethod.getParams().setSoTimeout(msTimeOut); } log.info("--queryString:" + getMethod.getQueryString()); HttpClient httpClient = new HttpClient(); if (needProxy) { String proxyUrl = "10.xx.xx.xx";//代理机IP String proxyPort ="8080";//代理机端口 String proxyUser ="xxxx";//代理用户名 String proxyPassword ="xxxx";//代理用户密码 String domain="xxxx.COM";//计算机所在的域 httpClient.getHostConfiguration().setProxy(proxyUrl,Integer.parseInt(proxyPort)); List authPrefs = new ArrayList(2); authPrefs.add(AuthPolicy.NTLM); httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT,"Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1"); httpClient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, authPrefs); // 如果代理需要密码验证,这里设置用户名密码 NTCredentials ntc=new NTCredentials(proxyUser, proxyPassword,proxyUrl,domain); httpClient.getState().setProxyCredentials(AuthScope.ANY,ntc); } try { int statusCode = httpClient.executeMethod(getMethod); log.info("http get url:" + getMethod.getURI()); log.info("----http status code:" + statusCode); if (statusCode == HttpStatus.SC_OK || statusCode==HttpStatus.SC_PARTIAL_CONTENT) { responseBody = getMethod.getResponseBodyAsString(); } } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { getMethod.releaseConnection(); } return responseBody; }
注意:该功能是使用commons-httpclient.jar 实现。
下篇文章我会讲述通过 httpclient使用NTLM协与https协议访问双向认证站点。
如果您觉得我的文章给了您帮助,请为我买一杯饮料吧!以下是我的支付宝,意思一下我将非常感激!
相关推荐
本文将深入探讨如何使用HttpClient实现NTLM协议以及处理HTTPS的双向认证,同时也会提及到源码分析和工具的使用。 首先,NTLM(NT LAN Manager)是一种身份验证协议,常用于Windows环境,特别是当集成Windows域时。...
HttpClient代理访问网络
根据提供的文件信息,我们可以深入探讨如何使用`httpclient`库来进行`https`访问,并了解其中涉及的关键概念和技术细节。 ### 标题与描述解析:使用`httpclient`进行`https`访问 #### 1. `httpclient`简介 `...
### httpclient使用教程 #### HttpClient概述与重要性 在当今互联网时代,HTTP协议无疑是网络通信中最常用且至关重要的协议之一。随着技术的发展,越来越多的Java应用程序需要直接通过HTTP协议访问网络资源。尽管...
### HttpClient 使用指南知识点详解 #### 一、概述与基本概念 **1.1 请求执行** - **1.1.1 HTTP请求**: 在客户端发起HTTP请求时,需要构造一个`HttpRequest`对象,它包含了请求方法(如GET、POST)、请求URL等...
本篇文章将详细探讨如何使用HttpClient来访问Servlet,并阐述相关的核心知识点。 首先,我们需要理解Servlet的本质。Servlet是一种Java类,它扩展了服务器的功能,用于处理HTTP请求并生成响应。通常,Servlet部署在...
HTTPClient协议
标题中的“使用httpClient访问https+443端口号”指的是使用Apache HttpClient库来发起HTTPS(安全超文本传输协议)请求,目标服务器的默认端口是443。HTTPS是一种基于SSL/TLS的安全通信协议,用于在客户端和服务器...
这个教程将深入讲解如何使用HttpClient进行单向认证的设置和应用。在本文中,我们将探讨HttpClient的基本概念、配置、请求执行以及如何处理单向认证的过程。 首先,HttpClient库提供了一套完整的API,允许开发者...
Http协议使用封装jar包(commons-codec-1.3.jar、commons-httpclient-3.1.jar、commons-logging-1.1.jar) 简单使用方法: public static void main(String[] args) { // String str1 = "...;...
它是一个基于请求与响应模型的、无状态的、应用层协议,通常运行在TCP/IP协议之上。在本项目中,我们将探讨如何使用VC++来实现HTTP协议的两端——HTTP Server和HTTP Client。 首先,我们要理解HTTP Server的工作...
在这个场景中,我们关注的是如何使用`httpclient`进行模拟登录并携带cookie来访问后续的URL。这个过程通常涉及到处理session和身份验证,对于开发需要登录功能的Web应用或自动化测试脚本尤其有用。 首先,`...
8. **SSL/TLS支持**:HttpClient可以配置为使用HTTPS协议,需要`httpmime-x.x.x.jar`(处理MIME类型,如上传文件)和相关SSL库,如`httpclient-cache-x.x.x.jar`(缓存机制)。 9. **错误处理和重试策略**:...
- **扩展性**:除了基本的HTTP功能外,HttpClient 还支持高级特性,比如HTTP压缩、代理服务器配置以及自定义错误处理机制等。 #### 三、请求执行 执行HTTP请求是使用HttpClient最基础的操作。在这个过程中,开发者...
HttpClient支持HTTP协议的最新版本,包括HTTP 1.0和1.1,以及一些高级特性,如HTTPS加密、HTTP代理、多种认证机制(Basic、Digest和NTLM)、多部分表单上传、持久连接等。 HttpClient的主要功能包括: 1. 实现了...
9. **身份验证**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证和NTLM认证。`AuthScheme`接口定义了认证方案,而`Credentials`接口表示认证凭据。 10. **代理设置**:如果你的请求需要通过代理服务器,...
《HttpClient 4.0 使用详解:访问开心网组件实例》 HttpClient 是 Apache 开源基金会提供的一个 HTTP 客户端库,被广泛应用于 Java 开发中,用于执行 HTTP 请求。HttpClient 4.0 版本引入了许多改进和新特性,使得...
httpclient是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,本文档提供使用httpclient的使用方法
3. **身份验证和安全**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证、NTLM等,并且可以与SSL/TLS协议结合,确保数据传输的安全性。 4. **重试和恢复策略**:HttpClient内置了重试和恢复策略,当网络...