HttpURLConnection是用来发送Http请求的类,用法如下:
<span style="font-size:18px;"> String urlStr = "http://www.xx.com";
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setReadTimeout(5000);
conn.setDoInput(true);
conn.setUseCaches(false);
//设置Cookie信息
conn.setRequestProperty("Cookie",cookie);
InputStream inputStream = conn.getInputStream();
//用于将网页信息输出到磁盘
FileOutputStream fos = new FileOutputStream(new File("F:/124.txt"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i=-1;
while((i=inputStream.read())!=-1){
//写入
baos.write(i);
//写入文件
fos.write(i);
}
fos.flush();
System.out.println(baos.toString());
conn.disconnect();</span>
这里的Cookie信息由我们来手动维护,在第一次登录或注册的时候,服务器会发送响应头,从中获得Cookie信息
<span style="font-size:18px;"> //之前的conn设置都相同
//输出参数params
//格式:a="some"&b="some"
conn.getOutputStream().write(params);
//调用connect()后,就可以获取header信息
conn.connect();
String key = null;
for(int i = 1;(key = conn.getHeaderFieldKey(i))!=null;i++ ){
System.out.print(key+":");
System.out.println(conn.getHeaderField(key));
if(key.equals("Set-Cookie")){
String cookieStr = conn.getHeaderField(key);
//获取的内容为 JSESSIONID=glapZp1oHEUI05C88Oikv; path=/</span><span style="font-size:18px;">
//所以需要分割获取前半段
String[] cookies = cookoeStr.split(";");
String cookie = cookie[0];
}
}
//下面的代码实现了相同的功能
/*Map<String, List<String>> maps = conn.getHeaderFields();
InputStream inputStream = conn.getInputStream();
List<String> cookieList = maps.get("Set-Cookie");
for(String cookie:cookieList){
System.out.println(cookie);
String[] str = cookie.split(";");
cookieStr = str[0];
System.out.println(str[0]);
}*/</span>