import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
public class Client
{
public static void test(String url,String encode,String path)
{
HttpClient httpClient = new HttpClient();
// httpClient.getHostConfiguration().setProxy(proxyHost, proxyPort) 可设置代理
// post方法
PostMethod postMethod = new PostMethod(url);
String from = "广州";
String to = "成都";
//需要的参数名称和值
NameValuePair[] paras = new NameValuePair[3];
paras[0] = new NameValuePair("from", from);
paras[1] = new NameValuePair("to",to);
paras[2] = new NameValuePair("act", "3");
postMethod.addParameters(paras);
postMethod.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)");
postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset="+encode);
postMethod.setRequestHeader("Referer", "http://www.ttkdex.com/");
BufferedReader reader = null;
BufferedWriter writer = null;
try
{
//响应状态码 成功为200
int code = httpClient.executeMethod(postMethod);
if(HttpStatus.SC_OK != code)
{
System.out.println("响应不成功");
return;
}
System.out.println("响应成功:code="+code);
reader = new BufferedReader(new InputStreamReader(postMethod.getResponseBodyAsStream(), encode));
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), encode));
String line = null;
while ((line = reader.readLine()) != null)
{
writer.write(line+"\r\n");
}
reader.close();
writer.close();
System.out.println("success ! result in file : "+path);
}
catch (HttpException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
//完成,释放连接,释放资源
postMethod.releaseConnection();
try
{
if(reader != null)
{
reader.close();
}
if(writer != null)
{
reader.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
System.out.println("run over ...");
}
public static void main(String[] args)
{
String url = "http://qq.ip138.com/train/train_search.asp";
String encode = "gb2312";
String savePath = "E:/test.html";
test(url,encode,savePath);
}
}
分享到:
相关推荐
在本文中,我们将深入探讨HttpClient的基本用法,以及如何使用它来抓取网页内容。 首先,你需要在项目中引入HttpClient的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....
本教程将详细介绍如何结合使用HttpClient与Jsoup来抓取和处理网页数据。 HttpClient是Apache基金会开发的一个开放源代码库,它允许开发者发送HTTP请求并接收响应,支持多种HTTP协议版本。HttpClient提供了丰富的...
使用HttpClient抓取网页数据的基本步骤如下: 1. **创建HttpClient对象**:首先,你需要创建一个HttpClient实例,这通常是通过`HttpClientBuilder`或`HttpClients`类完成的。 2. **构建HttpGet请求**:对于简单的...
在本篇文章中,我们将深入探讨如何使用Java HttpClient来抓取网页数据以及如何打包成jar文件。 **一、Java HttpClient简介** Java HttpClient 是 Apache HttpClient 库的一部分,它提供了丰富的功能,包括连接管理...
总之,HttpClient和Jsoup是Java开发者进行网页数据抓取的强大工具。HttpClient提供可靠的HTTP通信,而Jsoup则简化了HTML解析和数据提取的过程。结合两者,你可以高效地从各种网页中获取你需要的信息。在实际项目中,...
HTTPClient是Apache软件基金会的 HttpClient项目提供的一款Java库,它为Java程序员提供了强大的HTTP客户端功能,使得能够方便地进行网络请求和网页抓取。在本文中,我们将深入探讨HTTPClient库的基本概念、主要功能...
通过HttpClient,开发者可以方便地创建复杂的HTTP请求,实现自动化测试、网页抓取、API调用等功能。 模拟登录通常涉及以下几个步骤: 1. **构建请求**:首先,我们需要构造一个POST请求,因为登录通常涉及到表单...
在Android开发中,有时我们需要从网络上获取网页的HTML源代码,以便进行数据抓取或者模拟用户交互。HttpClient是Java中一个常用的HTTP客户端库,它允许我们方便地发送HTTP请求并接收响应。在这个名为"使用HttpClient...
- `HttpClient`实例化:创建一个`HttpClient`对象,可以设置连接超时、重试策略等参数。 - `HttpGet`与`HttpPost`:分别用于发送GET和POST请求。设置请求URL,并可添加请求头或参数。 - `HttpResponse`处理:执行...
在“java抓取网页数据”这个主题中,我们将深入探讨如何利用Java来抓取并处理互联网上的信息。 首先,我们要了解什么是网络爬虫。网络爬虫(Web Crawler)是自动遍历互联网的程序,通过抓取网页内容并存储在本地,...
本文是一份关于使用Java语言进行网页数据抓取的教程,主要介绍了使用Apache HttpClient这个库来完成网络请求和数据获取的操作。Apache HttpClient是一个支持HTTP协议的客户端工具,被广泛应用于Java爬虫开发中,帮助...
例如,使用Apache HttpClient,你可以创建一个HttpClient实例,配置请求头,然后执行HttpGet或HttpPost请求来获取网页内容: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); ...
总结来说,这个项目或教程涉及使用Jsoup解析和抓取网页,用HttpClient下载资源,同时利用Apache Commons库增强功能,提供了一种综合运用Java网络编程技术的实例。在实际开发中,这样的技术可以广泛应用于数据抓取、...
这两种方法都可以实现网页的爬取和保存,`URLConnection`适用于简单的爬取需求,而`HttpClient`则提供了更多功能和更好的灵活性,适合处理复杂的情况。选择哪种方法取决于具体项目的需求和性能考虑。在实际开发中,...
在Java编程语言中,抓取网页内容是一项常见的任务,尤其对于数据分析、信息提取以及网络爬虫等应用场景。本文将深入探讨如何使用Java实现简单的网页内容抓取,适合初学者入门学习。 首先,我们需要理解网页抓取的...
本实例主要关注如何解决在使用HttpClient进行文件上传时可能出现的乱码问题。 在HttpClient中,乱码问题通常出现在两个方面:请求参数的编码和响应内容的解码。请求参数的编码涉及到URL编码,特别是包含非ASCII字符...
在IT行业中,获取网页数据是常见的任务之一,用于数据分析、信息抓取或自动化测试等场景。HttpClient和HtmlParser是两个非常实用的Java库,分别用于处理HTTP通信和解析HTML内容。下面将详细介绍这两个库以及如何结合...
在HttpClient和Jsoup结合使用时,HttpClient负责获取网页源代码,Jsoup则负责解析和提取数据,两者协同工作,实现高效的网络抓取任务。对于标签中提到的“源码”部分,深入理解这两者的内部实现可以帮助我们更好地...
在Android开发中,有时我们需要从网络获取HTML源代码来实现某些功能,比如网页抓取、网页数据解析等。本例子提供了使用HttpClient和URLConnection两种方式来实现这个目标。这两种方法都是Android SDK内置的网络访问...