- 浏览: 315537 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 495将本地已有的一个非git项目上传到新建的git仓库的方法一共有 ... -
mac 忘记root密码
2014-04-14 22:14 739sudo bash password:输入你的当前用户密码 b ... -
RESTEasy 3 broken with Spring 4.0
2014-03-26 13:18 2343问题描述: ------------------------- ... -
eclipse中文注释字体大小如何修改
2014-03-21 12:03 9226貌似没有直接的办法,但是可以取个巧: Window --> ... -
【转】HTTP状态码
2014-03-18 14:41 677http://blog.csdn.net/teamlet/ar ... -
eclipse中集成jad反编译
2014-03-18 14:06 839转载地址:http://www.blogjava.net/sy ... -
eclipse 插件 File Explorer
2014-03-17 17:58 3856ExploreFS的安装地址: 在eclipse中Help – ... -
[转]Mac下搭建svn服务器和XCode配置svn
2014-03-02 19:33 1164转载自:http://blog.csdn.net/jjunjo ... -
[转]Wireshark基本介绍和学习TCP三次握手
2013-11-17 16:04 835Wireshark基本介绍和学习TCP三次握手http:/ ... -
数据压缩解压缩(zip)
2013-11-05 14:06 941网络上传输数据大部分都需要压缩数据后传递,常见的有zip方式压 ... -
【转】servlet,RMI,webservice之间的区别
2013-09-27 17:54 981转载自:http://blog.csdn.net/linw ... -
html页面内容自动换行显示
2013-03-25 11:32 1186style="word-break:break-al ... -
js编码转码中文
2013-03-25 11:29 3324javascript汉字编码与转码: <!DOCT ... -
Eclipse get/set方法 自动加上字段注释
2013-03-15 10:47 2817编码的时候通常要用到 JavaBean ,而在我们经常把注释写 ... -
亲和数、相亲数
2013-01-05 17:43 1560转自:http://zh.wikipedia.org/wiki ... -
java快速排序
2013-01-01 15:42 1092先简单说一下快速排序的原理(思路): 1、给定一个数组,选取其 ... -
gcd算法(求最大公约数)
2012-12-27 15:37 4488gcd算法:给定俩个正整数m,n(m>=n),求它们 ... -
xml内容解析,包含命名空间时需特殊处理(dom4j)
2012-12-19 12:53 1978你是否在解析xml内容的时候遇到包含命名空间的解析不到内容的情 ... -
标准对联广告Js代码
2012-07-30 17:09 1252标准对联广告Js代码 用于门户网站两侧的“对联广告” &l ... -
制作Mountain Lion安装U盘
2012-07-27 09:56 1178转自:http://tech.sina.com.cn/s/20 ...
相关推荐
使用java发送get和post请求实践
java 发送https get请求工具类
httpclient实现的工具类含有以下功能: 1、后台模拟发送GET请求 2、后台模拟发送POST请求 3、解决了中文乱码
JAVA-用HttpClient来模拟浏览器GET,POST.docx
java实现get请求post请求,文件传输 /** * 发送https请求 * @param requestUrl 请求地址 * @param requestMethod 请求方式(GET、POST) * @param outputStr 提交的数据 * @return 返回微信服务器响应的信息 ...
java HttpClient 发送GET请求和带有表单参数的POST请求教程例子
java发送http/https请求(get/post)代码,java 通过发送json,post请求,返回json数据的方法 java 通过发送json,post请求,返回json数据的方法
java发送get,post请求,可以实现与后台交互,代码便捷高效,是原生代码,支持并发性;代码结构清晰易懂,容易上手;
java模拟HTTP发送post和get请求工具类,使用httpClient类
用HTML页面模拟测试get/post请求,psot请求参数的格式为json串
java调用HTTP接口(Get请求和Post请求)
自己项目里的,可用
java的get和post请求,获取json的工具类,https时会存在ssl校验的问题,工具会自动去除ssl校验。
java给微信服务器发送get或post请求完整源码,依赖的jar都已经放到项目的lib目录下,下载下来后就可以直接通过junit运行
HttpClient(用CloseableHttpClient发送get/post请求)
利用httpclient-4.3.1.jar、httpcore-4.3.jar包,很简单的用java实现httpget和httppost请求。
java后台实现 get post 提交.zip
完整的java发送http包工程,可发送get及post请求。
Java 模拟Ajax POST GET 提交代码,实测很好用。
java发送post和get请求源码及jar包