目前,要为另一个项目提供接口,接口是用HTTP URL实现的,最初的想法是另一个项目用JQuery post进行请求。
但是,很可能另一个项目是部署在别的机器上,那么就存在跨域问题,而JQuery的post请求是不允许跨域的。
这时,就只能够用HttpClient包进行请求了,同时由于请求的URL是HTTPS的,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程。
1.写一个SSLClient类,继承至HttpClient
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
//用于进行Https请求的HttpClient
public class SSLClient extends DefaultHttpClient{
public SSLClient() throws Exception{
super();
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
ctx.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager ccm = this.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("https", 443, ssf));
}
}
2.写一个利用HttpClient发送post请求的类
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
/*
* 利用HttpClient进行post请求的工具类
*/
public class HttpClientUtil {
public String doPost(String url,Map<String,String> map,String charset){
HttpClient httpClient = null;
HttpPost httpPost = null;
String result = null;
try{
httpClient = new SSLClient();
httpPost = new HttpPost(url);
//设置参数
List<NameValuePair> list = new ArrayList<NameValuePair>();
Iterator iterator = map.entrySet().iterator();
while(iterator.hasNext()){
Entry<String,String> elem = (Entry<String, String>) iterator.next();
list.add(new BasicNameValuePair(elem.getKey(),elem.getValue()));
}
if(list.size() > 0){
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset);
httpPost.setEntity(entity);
}
HttpResponse response = httpClient.execute(httpPost);
if(response != null){
HttpEntity resEntity = response.getEntity();
if(resEntity != null){
result = EntityUtils.toString(resEntity,charset);
}
}
}catch(Exception ex){
ex.printStackTrace();
}
return result;
}
}
3.调用post请求的测试代码
import java.util.HashMap;
import java.util.Map;
//对接口进行测试
public class TestMain {
private String url = "https://192.168.1.101/";
private String charset = "utf-8";
private HttpClientUtil httpClientUtil = null;
public TestMain(){
httpClientUtil = new HttpClientUtil();
}
public void test(){
String httpOrgCreateTest = url + "httpOrg/create";
Map<String,String> createMap = new HashMap<String,String>();
createMap.put("authuser","*****");
createMap.put("authpass","*****");
createMap.put("orgkey","****");
createMap.put("orgname","****");
String httpOrgCreateTestRtn = httpClientUtil.doPost(httpOrgCreateTest,createMap,charset);
System.out.println("result:"+httpOrgCreateTestRtn);
}
public static void main(String[] args){
TestMain main = new TestMain();
main.test();
}
}
httpClient4.2的jar包下载路径:http://download.csdn.net/detail/hqmryang/4582440#comment
分享到:
相关推荐
3. **请求和响应处理**:HttpClient可以设置请求头、参数、编码方式等,并能解析HTTP响应,包括状态码、响应头和响应体内容。 4. **Cookie管理**:支持自动处理服务器返回的Cookie,方便进行会话管理。 5. **HTTP...
对于POST请求,HttpClient支持多种数据提交方式,如表单数据、MultipartEntity(适用于文件上传)等。 8. **线程安全**: HttpClient 3.1 在正确配置和使用下,可以保证在多线程环境中的安全性。 9. **异步请求*...
- **请求和响应处理**:HttpClient提供了`HttpRequestExecutor`和`HttpResponseHandler`接口,用于定制请求执行逻辑和响应处理方式。 - **身份验证与安全**:HttpClient支持多种认证机制,如Basic Auth、Digest ...
首先,我们来看`httpclient-4.3.1.jar`。这是Apache HttpClient的核心库,提供了一个灵活且高度可配置的HTTP客户端实现。它支持多种HTTP协议特性,如基本认证、代理设置、重定向处理、连接管理、请求和响应的解析等...
1. **httpclient-4.5.jar**:这是HTTPClient的核心库,包含了执行HTTP请求、管理连接、处理响应的基本类和接口。它支持HTTP/1.1协议,并且可以处理各种HTTP方法、头信息、编码、重定向等。 2. **httpcore-4.x.jar**...
在使用HttpClient时,开发者需要注意配置连接管理器、设置合适的超时、处理重定向和重试、以及选择合适的认证方式。同时,由于HttpClient的灵活性,正确地关闭和管理连接资源也非常重要,以避免资源泄露。 总之,...
HttpClient提供了丰富的API,允许开发者构建复杂的HTTP请求,包括GET、POST、PUT、DELETE等各种HTTP方法,并支持基本认证、HTTPS、Cookie管理、重定向处理等功能。此外,它还支持自定义请求头、实体编码、多部分上传...
1. `httpclient-4.5.jar`:这是HTTPClient的核心库,包含了执行HTTP请求、处理响应、管理连接池等功能的类和接口。 2. `httpcore-4.4.1.jar`:这是HTTP Core库,提供了HTTP协议的基本操作,包括请求和响应模型,...
HttpClient支持多种安全协议,如SSL/TLS,可以配置证书和密钥管理器,实现HTTPS通信。同时,通过`CredentialsProvider`和`Authenticator`,可以处理HTTP基本认证和其他复杂认证需求。 6. **与其他技术的集成** ...
此外,对于HTTPS请求,需要配置SSL上下文,并可能需要处理证书和密钥。 总的来说,HttpClient 4.5.5是一个强大且功能全面的HTTP客户端工具,适用于需要高效、可靠地处理HTTP通信的Java应用程序。它提供了丰富的API...
1. 主要系统库文件:commons-httpclient-3.1.jar,可以从Apache官方网站获取。 2. 其他依赖库文件:commons-codec-1.3.jar,因为HttpClient依赖Apache Commons Codec库,用于编码解码操作。如果没有此库,运行时会...
### HttpClient教程概览 #### 一、基础知识 **1.1 执行请求** - **HTTP 请求**:HTTP 请求包括请求行、请求头和可能的消息体。请求行包含方法(如GET、POST)、请求URI和HTTP版本。请求头包含了客户端希望服务器...
8. **SSL/TLS支持**:HttpClient 可以处理HTTPS连接,通过`SSLContext`和`SSLSocketFactory`可以自定义SSL/TLS配置,包括信任管理器和密钥库。 9. **响应处理**:HttpClient 提供了多种方式处理响应实体,如`...
在学习HttpClient源码时,你可以深入理解HTTP协议的工作方式,了解如何使用Java进行网络编程,以及如何设计可扩展和高效的库。源码中的注释和设计模式也会帮助你提升Java编程技巧。 总的来说,Apache HttpClient ...
HttpClient 4.5还支持HTTPS,提供了SSL/TLS安全连接的处理。 二、HttpClient 4.5新特性 1. 引入了HttpAsyncClient,用于异步HTTP操作,提高了性能和响应速度。 2. 连接管理器升级,提供了更智能的连接池管理,可以...
Commons HttpClient 是一个 Java 平台上的 HTTP 客户端库,它允许开发者通过编程方式执行 HTTP 请求,并处理响应。这个库在早期的 Java 开发中非常流行,特别是在需要与 Web 服务器进行复杂交互或者实现自动化测试时...
在压缩包中,除了`commons-httpclient-3.0.1.jar`主库外,还包括了其他几个依赖库: - `httpclient-4.5.13.jar`:这是一个更新版本的HttpClient库,可能被包含在项目中以支持更现代的HTTP特性和改进。 - `...
总的来说,`commons-httpclient-3.1.rar`这个压缩包提供了一种高效、灵活的HTTP通信方式,通过HttpClient和HttpMethod,开发者可以轻松地模拟浏览器行为,执行各种HTTP请求。尽管现代的网络开发可能更多地转向了...
2. HTTPS支持:HttpClient可以配置SSLContext,支持HTTPS连接,同时可以处理自签名证书和特定的TrustManager。 3. 缓存机制:HttpClient支持HTTP缓存规范,可以减少网络I/O,提高性能。 4. 高级特性:如自动处理...
这个"HTTPClient-4.5所需jar包.rar"压缩文件包含了使用HTTPClient库进行网络通信所需的Java档案(JAR)文件。HTTPClient 4.5版本是一个稳定且广泛使用的版本,它支持HTTP/1.1和部分HTTP/2协议,适用于各种网络应用...