`
bewithme
  • 浏览: 430486 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

httpclient使用NTLM协议访问外网

阅读更多

 

   很多情况下,公司的电脑是加入域的,而且上外网是要通过代理上网的,这总情况下使用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协议访问双向认证站点

    本文将深入探讨如何使用HttpClient实现NTLM协议以及处理HTTPS的双向认证,同时也会提及到源码分析和工具的使用。 首先,NTLM(NT LAN Manager)是一种身份验证协议,常用于Windows环境,特别是当集成Windows域时。...

    HttpClient代理访问网络

    HttpClient代理访问网络

    httpclient来进行https访问

    根据提供的文件信息,我们可以深入探讨如何使用`httpclient`库来进行`https`访问,并了解其中涉及的关键概念和技术细节。 ### 标题与描述解析:使用`httpclient`进行`https`访问 #### 1. `httpclient`简介 `...

    httpclient使用教程

    ### httpclient使用教程 #### HttpClient概述与重要性 在当今互联网时代,HTTP协议无疑是网络通信中最常用且至关重要的协议之一。随着技术的发展,越来越多的Java应用程序需要直接通过HTTP协议访问网络资源。尽管...

    httpClient使用指南最新版

    ### HttpClient 使用指南知识点详解 #### 一、概述与基本概念 **1.1 请求执行** - **1.1.1 HTTP请求**: 在客户端发起HTTP请求时,需要构造一个`HttpRequest`对象,它包含了请求方法(如GET、POST)、请求URL等...

    使用httpclient访问servlet

    本篇文章将详细探讨如何使用HttpClient来访问Servlet,并阐述相关的核心知识点。 首先,我们需要理解Servlet的本质。Servlet是一种Java类,它扩展了服务器的功能,用于处理HTTP请求并生成响应。通常,Servlet部署在...

    HTTPClient协议

    HTTPClient协议

    使用httpClient访问https+443端口号。

    标题中的“使用httpClient访问https+443端口号”指的是使用Apache HttpClient库来发起HTTPS(安全超文本传输协议)请求,目标服务器的默认端口是443。HTTPS是一种基于SSL/TLS的安全通信协议,用于在客户端和服务器...

    HttpClient使用教程 事例

    这个教程将深入讲解如何使用HttpClient进行单向认证的设置和应用。在本文中,我们将探讨HttpClient的基本概念、配置、请求执行以及如何处理单向认证的过程。 首先,HttpClient库提供了一套完整的API,允许开发者...

    Httpclient使用jar包三合一,基本使用方法

    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 = "...;...

    实现http协议两端httpserver和httpclient

    它是一个基于请求与响应模型的、无状态的、应用层协议,通常运行在TCP/IP协议之上。在本项目中,我们将探讨如何使用VC++来实现HTTP协议的两端——HTTP Server和HTTP Client。 首先,我们要理解HTTP Server的工作...

    httpUtil httpclient 登陆携带cookie访问下一个连接

    在这个场景中,我们关注的是如何使用`httpclient`进行模拟登录并携带cookie来访问后续的URL。这个过程通常涉及到处理session和身份验证,对于开发需要登录功能的Web应用或自动化测试脚本尤其有用。 首先,`...

    使用HttpClient必须的jar包

    8. **SSL/TLS支持**:HttpClient可以配置为使用HTTPS协议,需要`httpmime-x.x.x.jar`(处理MIME类型,如上传文件)和相关SSL库,如`httpclient-cache-x.x.x.jar`(缓存机制)。 9. **错误处理和重试策略**:...

    httpclient官网教程中文版

    - **扩展性**:除了基本的HTTP功能外,HttpClient 还支持高级特性,比如HTTP压缩、代理服务器配置以及自定义错误处理机制等。 #### 三、请求执行 执行HTTP请求是使用HttpClient最基础的操作。在这个过程中,开发者...

    Commons-HTTPClient组件介绍与使用

    HttpClient支持HTTP协议的最新版本,包括HTTP 1.0和1.1,以及一些高级特性,如HTTPS加密、HTTP代理、多种认证机制(Basic、Digest和NTLM)、多部分表单上传、持久连接等。 HttpClient的主要功能包括: 1. 实现了...

    commons-httpclient,java中使用httpclient中使用的扩展工具

    9. **身份验证**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证和NTLM认证。`AuthScheme`接口定义了认证方案,而`Credentials`接口表示认证凭据。 10. **代理设置**:如果你的请求需要通过代理服务器,...

    原创: httpclient 4.0 使用 - 访问开心网的各种组件 例子

    《HttpClient 4.0 使用详解:访问开心网组件实例》 HttpClient 是 Apache 开源基金会提供的一个 HTTP 客户端库,被广泛应用于 Java 开发中,用于执行 HTTP 请求。HttpClient 4.0 版本引入了许多改进和新特性,使得...

    httpclient使用帮助类

    httpclient是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,本文档提供使用httpclient的使用方法

    httpclient.jar包下载

    3. **身份验证和安全**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证、NTLM等,并且可以与SSL/TLS协议结合,确保数据传输的安全性。 4. **重试和恢复策略**:HttpClient内置了重试和恢复策略,当网络...

Global site tag (gtag.js) - Google Analytics