Jsoup系列学习(1)-发送get或post请求
简介
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
官网:http://www.open-open.com/jsoup/parsing-a-document.htm
1、jsoup的主要功能如下:
2、jsoup包
<!-- jsoup包依赖 -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.8.3</version>
</dependency>
get请求
public static String httpGet(String url,String cookie) throws IOException{
//获取请求连接
Connection con = Jsoup.connect(url);
//请求头设置,特别是cookie设置
con.header("Accept", "text/html, application/xhtml+xml, */*");
con.header("Content-Type", "application/x-www-form-urlencoded");
con.header("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0))");
con.header("Cookie", cookie);
//解析请求结果
Document doc=con.get();
//获取标题
System.out.println(doc.title());
//返回内容
return doc.toString();
}
2、其中get请求参数中,还可以通过另一种方式:
//获取请求连接
Connection conn = Jsoup.connect("http://www.cnblogs.com/zhangfei/p/");
//请求参数设置
conn.data("page","3");
//获取请求结果
Document doc = conn.get();
3、在发送请求中,我们不光只想获取响应内容,还想获取头信息或者cookie值,例如:在登陆中,我们获取登陆cookie值,那么我们可以在以后一定时间内发送请求,带上cookie值,就可以绕过登陆,不用重新登陆。
要取得cookies,必须要有个Response的对象,所以,要用execute方法,如果直接用post方面,返回的则是Document对象,但在用execute方法时,要事先调用一下method方法设定好请求方式即可。
获取get请求后指定头文件名称的值方法:
public static String httpGetHeader(String url,String cook,String header) throws IOException{
//获取请求连接
Connection con = Jsoup.connect(url);
//请求头设置,特别是cookie设置
con.header("Accept", "text/html, application/xhtml+xml, */*");
con.header("Content-Type", "application/x-www-form-urlencoded");
con.header("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0))");
con.header("Cookie", cook);
//发送请求
Response resp=con.method(Method.GET).execute();
//获取cookie名称为__bsi的值
String cookieValue = resp.cookie("__bsi");
System.out.println("cookie __bsi值: "+cookieValue);
//获取返回cookie所值
Map<String,String> cookies = resp.cookies();
System.out.println("所有cookie值: "+cookies);
//获取返回头文件值
String headerValue = resp.header(header);
System.out.println("头文件"+header+"的值:"+headerValue);
//获取所有头文件值
Map<String,String> headersOne =resp.headers();
System.out.println("所有头文件值:"+headersOne);
return headerValue;
}
post请求
1、使用jsoup模拟post请求返回body:
public static String httpPost(String url,Map<String,String> map,String cookie) throws IOException{
//获取请求连接
Connection con = Jsoup.connect(url);
//遍历生成参数
if(map!=null){
for (Entry<String, String> entry : map.entrySet()) {
//添加参数
con.data(entry.getKey(), entry.getValue());
}
}
//插入cookie(头文件形式)
con.header("Cookie", cookie);
Document doc = con.post();
System.out.println(doc);
return doc.toString();
}
2、发送post请求获取cookie值获取headers与get类似:
//发送请求
Response resp=con.method(Method.POST).execute();
//获取cookie名称为__bsi的值
String cookieValue = resp.cookie(header);
System.out.println(cookieValue);
2、源代码链接
参考
1、jsoup实现爬虫网络:http://blog.csdn.net/column/details/jsoup.html
2、Jsoup做接口测试:http://www.cnblogs.com/zhangfei/p/4359408.html
Jsoup系列学习(1)-发送get或post请求的更多相关文章
- [转]利用URLConnection来发送POST和GET请求
URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接.程序可以通过URLConnection实例向该URL发送请求.读取U ...
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需 要获取认证信息(如Cookie),所以返回的是HttpWeb ...
- (转) 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
转自:http://blog.csdn.net/zhoufoxcn/article/details/6404236 通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中 ...
- iOS开发网络篇—发送GET和POST请求(使用NSURLSession)
iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConn ...
- Ajax详解及其案例分析------如何获得Ajax对象,使用Ajax对象发送GET和POST请求,校验用户名,POST和GET请求时的乱码处理,实现级联的下拉列表
本节主要内容预览: 1 获得Ajax对象 2 使用Ajax对象发送GET请求 3 使用Ajax对象发送POST请求 4 使用Ajax校验用户名 5 POST请求时的乱码处理 6 GET请求时的乱码处理 ...
- php 利用socket发送GET,POST请求
作为php程序员一定会接触http协议,也只有深入了解http协议,编程水平才会更进一步.最近我一直在学习php的关于http的编程,许多东西恍然大悟,受益匪浅.希望分享给大家.本文需要有一定http ...
- 【转】在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
http://zhoufoxcn.blog.51cto.com/792419/561934 这个需求来自于我最近练手的一个项目,在项目中我需要将一些自己发表的和收藏整理的网文集中到一个地方存放,如果全 ...
- python用httplib模块发送get和post请求
在python中,模拟http客户端发送get和post请求,主要用httplib模块的功能. 1.python发送GET请求 我在本地建立一个测试环境,test.php的内容就是输出一句话: 1 e ...
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求【转载】
标签:C# HTTPS HttpWebRequest HTTP HttpWebResponse 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. ...
随机推荐
- AngularJs之四
一,数据循环:特别要注意作用域 使用ng-repeat指令. <div ng-app="myApp" ng-controller="myCtrl"> ...
- Vue 给子组件传递参数
Vue 给子组件传递参数 首先看个例子吧 原文 html <div class="container" id="app"> <div clas ...
- 移动端事件对象touches的误区
不想长篇大论,也是自己遗留下的一个错误的理解 在移动端触屏事件有四个 // 手势事件 touchstart //当手指接触屏幕时触发 touchmove //当已经接触屏幕的手指开始移动后触发 tou ...
- MVC5 网站开发之四 业务逻辑层的架构和基本功能
业务逻辑层在Ninesky.Core中实现,主要功能封装一些方法通过调用数据存储层,向界面层提供服务. 目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 ...
- Android线程管理之ExecutorService线程池
前言: 上篇学习了线程Thread的使用,今天来学习一下线程池ExecutorService. 线程管理相关文章地址: Android线程管理之Thread使用总结 Android线程管理之Execu ...
- 为什么基于Windows Server 2008 R2的网络负载均衡(NLB)配置的时候总会报错“主机不可访问”?
配置基于Windows的网络负载均衡是很容易的,操作也很简单,点点鼠标基本上就能完成,但是在进行节点(真实服务器)操作的过程中有时候会遇到一些主机不可访问的报错信息.这个又是为什么呢? Figure ...
- 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?
这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...
- LinqToDB 源码分析——生成与执行SQL语句
生成SQL语句的功能可以算是LinqToDB框架的最后一步.从上一章中我们可以知道处理完表达式树之后,相关生成SQL信息会被保存在一个叫SelectQuery类的实例.有了这个实例我们就可以生成对应的 ...
- .Net语言 APP开发平台——Smobiler学习日志:快速实现应用中的图片、声音等文件上传功能
最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的&qu ...
- WinForm 调用 PrintDocument
使用WinForm 打印 Devexpress BarCodeControl 二维码 /// <summary> /// Handles the ItemClick event of th ...