http://www.ibm.com/developerworks/cn/opensource/os-httpclient/
HttpClient 功能介绍
以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页。
- 实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
- 支持自动转向
- 支持 HTTPS 协议
- 支持代理服务器等
String url = "http://www.newsmth.net/bbslogin2.php";
PostMethod postMethod = new PostMethod(url);
// 填入各个表单域的值
NameValuePair[] data = { new NameValuePair("id", "youUserName"),
new NameValuePair("passwd", "yourPwd") };
// 将表单的值放入postMethod中
postMethod.setRequestBody(data);
// 执行postMethod
int statusCode = httpClient.executeMethod(postMethod);
// HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发
// 301或者302
if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY ||
statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
// 从头中取出转向的地址
Header locationHeader = postMethod.getResponseHeader("location");
String location = null;
if (locationHeader != null) {
location = locationHeader.getValue();
System.out.println("The page was redirected to:" + location);
} else {
System.err.println("Location field value is null.");
}
return;
}
处理HTTPS协议
HttpClient
提供了对SSL的支持,在使用SSL之前必须安装JSSE。在Sun提供的1.4以后的版本中,JSSE已经集成到JDK中,如果你使用的是JDK1.4
以前的版本则必须安装JSSE。JSSE不同的厂家有不同的实现。下面介绍怎么使用HttpClient来打开Https连接。这里有两种方法可以打开
https连接,第一种就是得到服务器颁发的证书,然后导入到本地的keystore中;另外一种办法就是通过扩展HttpClient的类来实现自动接
受证书。
方法1,取得证书,并导入本地的keystore:
1. 用IE打开需要连接的https网址,会弹出如下对话框:
2 单击"View Certificate",在弹出的对话框中选择"Details",然后再单击"Copy to File",根据提供的向导生成待访问网页的证书文件
3向导第一步,欢迎界面,直接单击"Next",
4向导第二步,选择导出的文件格式,默认,单击"Next",
5向导第三步,输入导出的文件名,输入后,单击"Next",
6 向导第四步,单击"Finish",完成向导
用keytool工具把刚才导出的证书倒入本地keystore。Keytool命令在<java-home>\bin\下,打开命令行窗口,并到<java-home>\lib\security\目录下,运行下面的命令:
keytool -import -noprompt -keystore cacerts
-storepass changeit -alias yourEntry1 -file your.cer
方法2,扩展HttpClient类实现自动接受证书
因为这种方法自动接收所有证书,因此存在一定的安全问题,所以在使用这种方法前请仔细考虑您的系统的安全需求。具体的步骤如下:
- 提
供一个自定义的socket
factory(test.MySecureProtocolSocketFactory)。这个自定义的类必须实现接口
org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory,在实现接口
的类中调用自定义的X509TrustManager(test.MyX509TrustManager),这两个类可以在随本文带的附件中得到
- 创建一个org.apache.commons.httpclient.protocol.Protocol的实例,指定协议名称和默认的端口号
Protocol myhttps = new Protocol("https", new MySecureProtocolSocketFactory (), 443);
|
- 注册刚才创建的https协议对象
Protocol.registerProtocol("https ", myhttps);
|
- 然后按照普通编程方式打开https的目标地址
分享到:
相关推荐
与其他语言如Java或Objective-C中的类似功能相比,`HttpClient`在.NET平台上的实现更加便捷高效。 #### 三、API接口设计与标准性 ##### 3.1 Get方式 Get方法通常用于从服务器获取资源。在Web API中,Get方法可以有...
版本号1.1.x - > Java的8,码头9.4.x 2.0.x - > Java的11,码头10.0.x 3.0.x > Java 11,Jetty 11.0.x用法普通ReactiveStreams的使用// Create and start Jetty's HttpClient.HttpClient httpClient = new ...
压缩包中含有多个文档,从了解httpclient到应用。 httpClient 1httpClint 1.1简介 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持...
3. **构建HTTP请求**:使用Java的HttpURLConnection或HttpClient库,构造一个POST请求到Clickatell的服务器。请求的URL、方法、头部和请求体都需要根据Clickatell的API文档进行设置。 4. **填充请求参数**:在请求...
然后,使用像HttpURLConnection或者HttpClient这样的Java库来发起HTTP请求,将短信内容、接收方电话号码以及API密钥作为请求参数。 在标签“源码”中,我们可以期待看到一段实现这个功能的Java代码示例。这段代码...
using var client = new HttpClient(timeoutHandler); var response = await client.SendAsync(requestMessage); ``` 4. **异常处理**: 当请求超时时,`HttpClient`会抛出`TaskCanceledException`异常。这通常表示...
Responsys rest client using JAVA with httpclient和simple json 将responsys_rest.jar添加到classpath中,根据samples.java示例使用或者复制restClient.java,根据自己的喜好构建/自定义。 获取 json 负载示例的...
2. 使用RESTful:对于基于REST的Web服务,可以使用HttpClient类,它位于System.Net.Http命名空间中。通过发送HTTP请求(GET、POST、PUT等),并处理返回的JSON或XML数据,即可实现调用。 三、具体步骤 1. 获取WSDL...
using (var client = new HttpClient()) { var content = new StringContent( $"{{\"access_token\":\"{accessToken}\", \"target_id\":\"{targetId}\", \"msg_type\":\"text\", \"content\":\"{message}\"}}", ...
Java中,短信接口的实现方式类似,通常使用`HttpURLConnection`或第三方库如Apache HttpClient、OkHttp。这里以HttpURLConnection为例: ```java import java.io.OutputStream; import java.net.HttpURLConnection;...
5. **代码实现**:调用WebService的代码通常涉及使用HttpWebRequest或HttpClient类来发送HTTP POST请求,并附带构建好的XML数据。在.NET中,可以通过`System.IO`和`System.Xml`命名空间的类来读取和修改XML文件,...
在C#中可以使用`HttpClient`类,Java中有`HttpURLConnection`,C++的`libcurl`库,.Net框架下则有各种选择,如`WebClient`或`HttpClient`。 5. **处理响应**:接收路由器返回的HTTP响应,检查状态码以确认命令是否...
Readers of the Java EE Architect’s Handbook, Second Edition are well acquainted with traditional application architectures. Since this book was published, microservices architecture has emerged. It ...
标题“Exporting beans as web services using XFire”指的是利用XFire框架将Java Beans导出为Web服务。在本文中,我们将深入探讨这个主题,并结合标签“源码”和“工具”,来理解如何通过源代码和特定工具实现这一...
using HttpClient httpClient = new HttpClient(); // 设置请求头,特别是Content-Type httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // 创建...
JAVA短信接口调用实例中,可以使用HttpURLConnection或者Apache HttpClient库。以下是一个使用HttpURLConnection的例子: ```java import java.io.OutputStream; import java.net.HttpURLConnection; import java...
9. **版本控制**:在压缩包文件名中看到的"Unofficial-Way2Sms-API-using-JAVA-master"暗示项目使用了Git进行版本控制。开发者可以借此跟踪代码变更,协作开发,并轻松回滚到历史版本。 10. **开源项目实践**:作为...
Defines the rmic compiler for generating stubs and skeletons using the Java Remote Method Protocol (JRMP) and stubs and tie class files (IIOP protocol) for remote objects. jdk.scripting.nashorn ...
using (var client = new HttpClient()) { var response = await client.GetAsync(servletUrl); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); } } ``` 接下来,...
using var httpClient = new HttpClient(); var response = await httpClient.SendAsync(request); ``` 6. **Java Servlet处理POST请求**: 在Java端,Servlet会捕获这些POST请求。`javax.servlet....