java.net.HttpURLConnection

Java网页抓取与Cookie管理
本文介绍如何使用Java进行网页内容抓取及Cookie管理,包括通过URL建立连接、读取网页内容、获取和设置Cookie等操作。还介绍了POST请求的模拟发送。

1.网页内容获取
java.io.inputstream in;
java.net.url url = new java.net.url(www.xyz.com/content.html);
java.net.httpurlconnection connection = (java.net.httpurlconnection)
url.openconnection();
connection = (java.net.httpurlconnection) url.openconnection();
//模拟成ie
connection.setrequestproperty("user-agent","mozilla/4.0 (compatible; msie 6.0; windows 2000)");
connection.connect();
in = connection.getinputstream();
java.io.bufferedreader breader =
new bufferedreader(new inputstreamreader(in , "gbk"));
string str=breader.readline());
while(st != null){
system.out.println(str);
str=breader.readline());
}
2.cookie管理

1.直接的方式
取得cookie:
httpurlconnection huc= (httpurlconnection) url.openconnection();
inputstream is = huc.getinputstream();
// 取得sessionid.
string cookieval = hc.getheaderfield("set-cookie");
string sessionid;
if(cookieval != null)
{
sessionid = cookieval.substring(0, cookieval.indexof(";"));
}

发送设置cookie:
httpurlconnection huc= (httpurlconnection) url.openconnection();
if(sessionid != null)
{
huc.setrequestproperty("cookie", sessionid);
}
inputstream is = huc.getinputstream();

 

2.利用的jcookie包(http://jcookie.sourceforge.net/ )
获取cookie:
url url = new url("http://www.site.com/");
httpurlconnection huc = (httpurlconnection) url.openconnection();
huc.connect();
inputstream is = huc.getinputstream();
client client = new client();
cookiejar cj = client.getcookies(huc);


新的请求,利用上面获取的cookie:

url = new url("http://www.site.com/");
huc = (httpurlconnection) url.openconnection();
client.setcookies(huc, cj);


3.post方式的模拟
url url = new url("www.xyz.com");
httpurlconnection huc = (httpurlconnection) url.openconnection();
//设置允许output
huc.setdooutput(true);
//设置为post方式
huc.setrequestmethod("post");
huc.setrequestproperty("user-agent","mozilla/4.7 [en] (win98; i)");
stringbuffer sb = new stringbuffer();
sb.append("username="+usernme);
sb.append("&password="+password);

//post信息
outputstream os = huc.getoutputstream();
os.write(sb.tostring().getbytes("gbk"));
os.close();

bufferedreader br = new bufferedreader(new inputstreamreader(huc.getinputstream()))


huc.connect();

string line = br.readline();

while(line != null){

l

system.out.printli(line);


line = br.readline();

}

### HttpsURLConnection与java.net.HttpURLConnection的关系 `HttpsURLConnection` 是 `HttpURLConnection` 的子类,专门用于处理通过 HTTPS 协议的安全连接。两者都继承自 `URL.openConnection()` 方法返回的对象,但在功能和配置上存在显著差异。 #### 主要区别 1. **协议支持** - `HttpURLConnection` 支持标准的 HTTP 协议,适用于非加密的数据传输。 - `HttpsURLConnection` 则扩展了 `HttpURLConnection` 来支持 HTTPS 协议,提供安全的通信通道[^1]。 2. **安全性设置** - 对于 `HttpsURLConnection` 实例,在建立网络连接之前可以配置多个特定参数来增强安全性,比如指定使用的 SSL Socket 工厂 (`SSLSocketFactory`) 和主机名验证器 (`HostnameVerifier`) 。这些特性对于确保客户端和服务端之间数据交换的安全至关重要[^2]。 3. **默认行为变化** - 在早期版本中,为了使 JSSE (Java Secure Socket Extension) 正常工作,开发者需要手动设定 `java.protocol.handler.pkgs` 属性指向 Sun 提供的具体实现包路径;然而现在除非特别需求获取 `com.sun.net.ssl.HttpsURLConnection` 类型对象外,这一步骤已被简化不再必要。 4. **API 使用方式** - 尽管二者 API 接口相似,但当涉及到具体操作如发送请求头、读取响应流等时,由于底层实现了不同的协议栈,因此实际编码过程中仍需注意区分并适当调整代码逻辑以适应各自特点。 ```java // 创建 URL 并打开连接 URL url = new URL("https://example.com"); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); // 设置必要的属性 conn.setSSLSocketFactory(sslSocketFactory); conn.setHostnameVerifier(hostnameVerifier); // 发起连接前调用 connect() conn.connect(); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值