添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

package test.httpclient;

import java.io.IOException;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
import org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory;

/**
* 基于https请求
* @author zsx
*
*/
public class HttpClientTest {
public static void main(String[] args) throws HttpException, IOException {
String content = "内容";
sslTest(content);
}

public static void sslTest(String content) throws HttpException, IOException {
//使用默认SSLProtocolSocketFactory
ProtocolSocketFactory psf = new SSLProtocolSocketFactory();
//设置https协议
Protocol myhttps = new Protocol("https", psf, 443);
HttpClient httpclient = new HttpClient();
//配置请求
httpclient.getHostConfiguration().setHost("host地址(如www.test.com)", 443, myhttps);
PostMethod httpPost = new PostMethod("调用地址(如/resource)");
try {
RequestEntity requestEntity = new StringRequestEntity(content, "application/json", "utf-8");
httpPost.setRequestEntity(requestEntity);
int status = httpclient.executeMethod(httpPost);
System.out.println(status);
String resp = httpPost.getResponseBodyAsString();
System.out.println(resp);
} finally {
httpPost.releaseConnection();
}
}
}

1httpClint 1.1简介 HttpClient 是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。 HttpClient 已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都 使用 HttpClient 。 下载地址:  http://hc.apache.org/downloads.cgi 1.2特性 1. 基于标准、纯净的java语言。实现了Http1.0和Http1.1 2. 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。 3. 支持 HTTPS 协议。 4. 通过Http代理建立透明的连接。 5. 利用CONNECT方法通过Http代理建立隧道的 https 连接。 6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认证方案。 7. 插件式的自定义认证方案。 8. 便携可靠的套接字工厂使它更容易的 使用 第三方解决方案。 9. 连接管理器支持多线程应用。支持设置最大连接数,同时支持设置每个主机的最大连接数,发现并关闭过期的连接。 10. 自动处理Set-Cookie中的Cookie。 11. 插件式的自定义Cookie策略。 12. Request的输出流可以避免流中内容直接缓冲到socket服务器。 13. Response的输入流可以有效的从socket服务器直接读取相应内容。 14. 在http1.0和http1.1中利用KeepAlive保持持久连接。 15. 直接获取服务器发送的response code和 headers。 16. 设置连接超时的能力。 17. 实验性的支持http1.1 response caching。 18. 源代码基于Apache License 可免费获取。 1.3版本 org.apache.http.impl.client. HttpClient s 与 org.apache.commons. httpclient . HttpClient 目前后者已被废弃,apache已不再支持。 一般而言, 使用 HttpClient 均需导入 httpclient .jar与 httpclient -core.jar2个包。 1.4 使用 方法与步骤 开发环境:需要 使用 HttpClient 发送 请求 、接收响应很简单,一般需要如下几步即可。 1. 创建 HttpClient 对象。 HttpClient client = new HttpClient (); 2. 创建 请求 方法的实例,并指定 请求 URL。如果需要发送GET 请求 创建 HttpGet对象;如果需要发送POST 请求 创建 HttpPost对象。 // 使用 GET方法,如果服务器需要通过 HTTPS 连接,那只需要将下面URL中的 http换成 https HttpMethod method = new GetMethod("http://www.baidu.com"); // 使用 POST方法 HttpMethod method = new PostMethod("http://java.sun.com";); 3. 如果需要发送 请求 参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加 请求 参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置 请求 参数。 3.调用 HttpClient 对象的execute(HttpUriRequest request)发送 请求 ,该方法返回一个HttpResponse。 client.executeMethod(method); 5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。 6. 释放连接。无论执行方法是否成功,都必须释放连接 //打印服务器返回的状态 System.out.println(method.getStatusLine()); //打印返回的信息 System.out.println(method.getResponseBodyAsString( httpClient .getHostConfiguration().setHost(host, port, protocol); 来设置 请求 的host、端口和协议,可以是http,也可以是 https 。 public static JSONObject get(String url, Strin... Java 11标准化的HTTP Client是一种替代HttpURLConnection的新的HTTP客户端库。它提供了更强大、更灵活的功能,可以发送HTTP 请求 和接收HTTP响应。Java 11的HTTP Client支持HTTP/1.1和HTTP/2,并且具有异步和流式处理的能力。// 创建 HttpClient 对象// 创建 HttpRequest对象.GET().build();// 发送同步 请求 try {// 输出响应结果// 发送异步 请求 // 处理异步响应。 因为有负载均衡的考虑,前端用了nginx动态代理。 两个域名虽然IP相同,但是如果不设置hosts文件,直接通过IP,是会返回404的。 所以需求就是这样,不设置hosts文件,而正确访问到对应的域名。 其实访问的IP是一样的,只是request header的Host不一样。 搜索到的解决方式:http://my.oschina.net/mikewei/blog/88606 这样有些不     一般的情况下我们都是 使用 IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等。所访问的这些页面有的仅仅是一些普通的页面,有的需要用户登录后方可 使用 ,或者需要认证以及是一些通过加密方式传输,例如 HTTPS 。目前我们 使用 的浏览器处理这些情况都不会构成问题。不过你可能在某些时候需要通过程序来访问这样的一些页面,比如从别人的网页中“偷”一些数据;利用某些 使commons httpclient 支持 https 协议类,是commons httpclient import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket... import org.apache.commons. httpclient . HttpClient ; import org.apache.commons. httpclient . HttpS tatus; import org.apache.commons. httpclient .SimpleHttpConnectionManager; import com.google.gson.Gson; import org.apache.commons.codec.binary.Base64; import org.apache.commons. httpclient . HttpClient ; import org.apache.commons. httpclient .HttpExcep... import org.apache.commons. httpclient . HttpClient ; //导入方法依赖的package包/类/*** Builds an HTTP client with the given settings. Settings are NOT reset to their default values after a client has* been created.... /设置代理IP,设置连接超时时间、设置 请求 读取数据的超时时间、设置从connectManager获取Connection超时时间、2. httpclient 浏览器级别代理,相当于把浏览器设置一个全局ip代理,所有访问默认全是ip代理。1.在 请求 时设置代理。优点是自由,哪个访问用代理哪个访问不用可以随意控制。...... 情况是这样的,公司是做支付业务的,所以有异步通知订单的业务,商户有 https ,http 都有的但是有一些商户的 https 一个证书对应多个域名的情况,亦或者自建证书,所有我们需要修改成视情况而定的放弃证书的校验下面直接提出工具类 SSLClient 跳过证书校验返回 Closeable HttpClient package http; import java.security.cert.Certif...