- 浏览: 323133 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
hdwmp123:
GGGGeek 写道HTMLLayout布局的邮件被QQ邮箱拒 ...
logback配置错误邮件发送 -
GGGGeek:
HTMLLayout布局的邮件被QQ邮箱拒收了,代理服务用的是 ...
logback配置错误邮件发送 -
Inmethetiger:
在windows下面用;分隔,linux下面用:分隔。 在 ...
【转】程序包com.sun.image.codec.jpeg不存在 问题的完美解决 -
wuxiaozeng2440:
感动了,谢谢
这世界上你最在乎的人 -
ahong520:
很重要的一点,安装完xcode后还需要到xcode prefe ...
MAC下配置Eclipse Java/C++ 开发环境
java模拟浏览器操作,一般有五个步骤:
1、创建连接;
2、设置请求头信息
3、连接
4、设置请求参数
5、获取响应结果(包括响应头和内容)
下面以“中国国际航空航班信息查询”为例:
public static void main(String[] args)
{
final String encode = "utf-8";
final String website = "http://et.airchina.com.cn";
final int connectTimeOut = 15000;
final int readDataTimeOut = 50000;
HttpURLConnection httpConn = null;
String htmlContent = null;
String requestCookie = null;
String reqUrl = "/InternetBooking/AirLowFareSearchExt.do";
try
{
// 第一次请求【POST】
// 1、创建连接
URL url = new URL(website + reqUrl);
httpConn = (HttpURLConnection) url.openConnection();
httpConn.setDoInput(true);
httpConn.setDoOutput(true);
httpConn.setUseCaches(false);
httpConn.setConnectTimeout(connectTimeOut);
httpConn.setReadTimeout(readDataTimeOut);
// 2、设置请求头
httpConn.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)");
System.out.println("request url : " + reqUrl);
// 3、连接
httpConn.setRequestMethod("POST");
httpConn.connect();
// 4、设置请求参数
OutputStream outStream = httpConn.getOutputStream();
String postData = "tripType=OW&searchType=FARE&flexibleSearch=false&directFlightsOnly=false&fareOptions=1.FAR.X&outboundOption.originLocationCode=PEK&outboundOption.destinationLocationCode=SZX&outboundOption.departureDay=28&outboundOption.departureMonth=09&outboundOption.departureYear=2011&outboundOption.departureTime=NA&guestTypes%5B0%5D.type=ADT&guestTypes%5B0%5D.amount=4 &guestTypes%5B1%5D.type=CNN&guestTypes%5B1%5D.amount=0&guestTypes%5B2%5D.type=INF&guestTypes%5B2%5D.amount=0&pos=AIRCHINA_CN&lang=zh_CN&ajaxAction=true";
outStream.write(postData.getBytes());
outStream.flush();
outStream.close();
// 5、获取响应结果
// 获取响应头信息
Map<String, List<String>> resHeaderMap = httpConn.getHeaderFields();
if (null != resHeaderMap
&& false == resHeaderMap.isEmpty())
{
for (Map.Entry<String, List<String>> entry : resHeaderMap.entrySet())
{
String key = entry.getKey();
String value = java.util.Arrays.toString(entry.getValue().toArray());
if (null != key
&& "Set-Cookie".equals(key.trim()))
{
requestCookie = value;
requestCookie = requestCookie.replace("[", "");
requestCookie = requestCookie.replace("]", "");
}
System.out.println(key + " : " + value);
}
}
System.out.println("\n\nresponse cookie : " + requestCookie);
// if (HttpURLConnection.HTTP_OK == httpConn.getResponseCode())
// {
// InputStream inStream = httpConn.getInputStream();
// htmlContent = getContentByStream(inStream, encode);
// System.out.println(htmlContent);
// }
// 第二次请求【POST】
// 1、创建连接
reqUrl = "/InternetBooking/AirFareFamiliesFlexibleForward.do";
url = new URL(website + reqUrl);
httpConn = (HttpURLConnection) url.openConnection();
httpConn.setDoInput(true);
httpConn.setDoOutput(true);
httpConn.setUseCaches(false);
httpConn.setConnectTimeout(connectTimeOut);
httpConn.setReadTimeout(readDataTimeOut);
// 2、设置请求头
httpConn.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)");
if (null != requestCookie
&& false == "".equals(requestCookie.trim()))
{
httpConn.setRequestProperty("Cookie", requestCookie);
}
System.out.println("request url : " + reqUrl);
// 3、连接
httpConn.setRequestMethod("POST");
httpConn.connect();
// 4、设置请求参数
outStream = httpConn.getOutputStream();
postData = "lang=zh_CN";
outStream.write(postData.getBytes());
outStream.flush();
outStream.close();
// 5、获取响应结果
if (HttpURLConnection.HTTP_OK == httpConn.getResponseCode())
{
InputStream inStream = httpConn.getInputStream();
htmlContent = getContentByStream(inStream, encode);
// System.out.println(htmlContent);
// 6、内容输入到文件中
writeToFile(htmlContent);
}
System.out.println("================== crawl over. ");
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} finally
{
if (null != httpConn)
{
try
{
httpConn.disconnect();
} catch (Exception e)
{
}
}
} // end-try-catch-finally
}
发表评论
-
将本地已有的一个项目上传到新建的git仓库的方法
2019-03-21 16:33 554将本地已有的一个非git项目上传到新建的git仓库的方法一共有 ... -
mac 忘记root密码
2014-04-14 22:14 784sudo bash password:输入你的当前用户密码 b ... -
RESTEasy 3 broken with Spring 4.0
2014-03-26 13:18 2400问题描述: ------------------------- ... -
eclipse中文注释字体大小如何修改
2014-03-21 12:03 9314貌似没有直接的办法,但是可以取个巧: Window --> ... -
【转】HTTP状态码
2014-03-18 14:41 714http://blog.csdn.net/teamlet/ar ... -
eclipse中集成jad反编译
2014-03-18 14:06 894转载地址:http://www.blogjava.net/sy ... -
eclipse 插件 File Explorer
2014-03-17 17:58 3906ExploreFS的安装地址: 在eclipse中Help – ... -
[转]Mac下搭建svn服务器和XCode配置svn
2014-03-02 19:33 1213转载自:http://blog.csdn.net/jjunjo ... -
[转]Wireshark基本介绍和学习TCP三次握手
2013-11-17 16:04 881Wireshark基本介绍和学习TCP三次握手http:/ ... -
数据压缩解压缩(zip)
2013-11-05 14:06 992网络上传输数据大部分都需要压缩数据后传递,常见的有zip方式压 ... -
【转】servlet,RMI,webservice之间的区别
2013-09-27 17:54 1030转载自:http://blog.csdn.net/linw ... -
html页面内容自动换行显示
2013-03-25 11:32 1264style="word-break:break-al ... -
js编码转码中文
2013-03-25 11:29 3377javascript汉字编码与转码: <!DOCT ... -
Eclipse get/set方法 自动加上字段注释
2013-03-15 10:47 2865编码的时候通常要用到 JavaBean ,而在我们经常把注释写 ... -
亲和数、相亲数
2013-01-05 17:43 1634转自:http://zh.wikipedia.org/wiki ... -
java快速排序
2013-01-01 15:42 1157先简单说一下快速排序的原理(思路): 1、给定一个数组,选取其 ... -
gcd算法(求最大公约数)
2012-12-27 15:37 4558gcd算法:给定俩个正整数m,n(m>=n),求它们 ... -
xml内容解析,包含命名空间时需特殊处理(dom4j)
2012-12-19 12:53 2037你是否在解析xml内容的时候遇到包含命名空间的解析不到内容的情 ... -
标准对联广告Js代码
2012-07-30 17:09 1303标准对联广告Js代码 用于门户网站两侧的“对联广告” &l ... -
制作Mountain Lion安装U盘
2012-07-27 09:56 1222转自:http://tech.sina.com.cn/s/20 ...
相关推荐
在Java编程中,有时我们需要模拟浏览器发送HTTP请求,例如调用外部接口或API。`HttpURLConnection`是Java标准库提供的一种轻量级的HTTP客户端,它允许我们在后台代码中发送GET和POST请求。本篇文章将深入讲解如何...
JAVA使用HttpClient模拟浏览器GET、POST请求 在本文中,我们将介绍如何使用Apache Commons HttpClient库来模拟浏览器的GET和POST请求。HttpClient库是一个开放源码的项目,是Apache Commons项目的一部分,旨在简化...
Advanced REST Client(ARC)是一款强大的开发工具,专为这个目的设计,它允许用户模拟浏览器发送各种类型的HTTP请求,并查看详细的响应结果。这款工具对于前端开发者、后端开发者以及API测试人员来说都极具价值。 ...
- **HttpURLConnection**:Java标准库提供的基础HTTP客户端,可以用来发送GET和POST请求,模拟浏览器行为。 - **Apache HttpClient**:一个功能强大的HTTP客户端库,提供了更灵活和高效的API来处理HTTP请求。 - *...
本文详细介绍了如何使用Java模拟发送GET和POST请求,并对Cookie进行了处理。掌握了这些技术后,你就可以更灵活地与Web服务交互,实现自动化任务或数据抓取等功能。需要注意的是,在实际应用中还应考虑异常处理、编码...
总结,HttpClient是Java中强大的HTTP客户端工具,通过它可以方便地模拟浏览器的GET和POST请求,同时提供了丰富的配置选项和源码供开发者深入研究。理解和掌握HttpClient的使用能提升开发效率,更好地应对网络通信的...
Java Web 中 HttpClient 模拟浏览器登录后发起请求是指在 Java Web 应用程序中使用 HttpClient 库模拟浏览器的行为,模拟浏览器登录到服务器,然后发起请求获取资源。这种技术广泛应用于爬虫、自动化测试、数据爬取...
本篇文章将深入探讨如何使用Java模拟GET/POST登录,特别是涉及验证码处理的情况。我们将主要关注Httpclient库的使用,以及可能涉及到的图像识别技术(OCR)。 首先,让我们了解一下HTTP的基本概念。HTTP是超文本...
使用HttpClient来模拟浏览器GET_POST HttpClient是一个Apache开源组织中的项目,隶属于Jakarta的commons项目,旨在简化HTTP客户端与服务器进行各种通讯编程。通过使用HttpClient,可以轻松地解决以前很头疼的事情,...
在某些场景下,我们需要模拟POST请求来与服务器进行数据交互,这通常是HTTP协议中的一个方法,用于发送数据到服务器以创建或更新资源。在描述中提到的,我们将探讨如何使用Selenium来封装POST参数并提交,以获取异步...
这个库广泛应用于Web服务调用、API接口测试以及自动化脚本中,因为它可以模拟浏览器的行为,进行GET、POST等复杂的HTTP请求。 在Java编程中,HttpClient提供了一个强大的API,允许我们创建自定义的HTTP请求,设置...
它允许开发者模拟浏览器行为,向服务器发送GET、POST或者其他HTTP方法的请求,并接收服务器的响应。在本实例中,我们将深入探讨如何使用HttpClient来发送请求以及处理返回的数据。 首先,让我们了解HttpClient的...
在Java编程中,发送HTTP...总的来说,Java中发送HTTP GET和POST请求涉及到网络编程的基本概念,包括URL、URLConnection、请求头和响应头的设置,以及数据的读写。了解这些知识对于进行Web服务开发和API调用至关重要。
默认是GET,若需发送POST请求,应调用`setRequestMethod("POST")`。 ```java connection.setRequestMethod("POST"); ``` 3. **设置请求属性**:可以设置请求头,如Content-Type、User-Agent等。例如: ```java ...
当我们谈论“浏览器发送模拟httpclient软件”时,我们指的是一个能够模拟浏览器行为的应用程序,允许用户通过编程方式执行HTTP请求,如POST和GET。 POST和GET是HTTP请求的两种主要方法。GET用于从服务器获取资源,...
这些库允许我们构造POST请求,模拟用户登录过程,通常需要设置请求头(如User-Agent)、POST参数(如用户名和密码)以及可能的Cookie信息。 2. **登录过程模拟**:在海投网的登录过程中,可能需要处理验证码、...
为了测试这些功能,可以编写单元测试或集成测试,模拟不同的请求场景,包括携带不同数据的GET请求和POST请求,以及带有中文参数的情况。通过测试,可以确保服务器端在实际部署后能够稳定、准确地处理来自客户端的...
通过`(HttpURLConnection) connection`转换类型,可以设置请求方法(如GET或POST)、设置请求头等。 4. **数据读取**:一旦连接建立,我们可以通过`InputStream`读取服务器返回的数据。例如:`BufferedReader in = ...
本文详细介绍了如何使用Apache HttpClient库在Java中模拟发送Http GET和POST请求的方法。通过这种方式,可以在开发过程中高效地进行测试、调试等工作。同时,Apache HttpClient还提供了更多高级功能,如SSL/TLS支持...