背景
小编相信编写过Java爬虫的人对 Jsoup 绝对不会陌生的。对于他的html 解析的优越功能就不阐述了。这次所要讲的就是jsoup 的另一个应用 发送http请求。
小编以前遇到过一个问题,一个工程所布置的主机不能访问外网,但是当时的数据必须需要访问阿里在线api 。Java 代码如何能做到这点了。当然方法很多,这里我就用到了 jsoup。
详细介绍:
pom.xml依赖
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.9.2</version> </dependency>
java 代码如下
import org.jsoup.Connection; import org.jsoup.Jsoup; public class JsoupUtil { public static final String USER_AGENT = "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"; public static final int TIME_OUT = 30000; private static Logger log = LoggerFactory.getLogger(JsoupUtil.class); private static final String proxy_ip = "ip"; private static final String proxy_port ="port"; public static String sendPost(String url, Map params) { log.info("请求的url------:{}", url); Connection con = Jsoup.connect(url) .userAgent(USER_AGENT) .timeout(TIME_OUT) .method(Connection.Method.POST) .ignoreContentType(true); con.proxy(proxy_ip, Integer.parseInt(proxy_port)); con.data(params); Connection.Response rs = null; try { rs = con.execute(); } catch (IOException e) { e.printStackTrace(); } return rs.body(); } public static String sendGet(String url) { log.info("请求的url-----:{}", url); Connection conn = Jsoup.connect(url) .userAgent(USER_AGENT) .timeout(TIME_OUT) .method(Connection.Method.GET) .ignoreContentType(true); conn.proxy(proxy_ip, Integer.parseInt(proxy_port)); Connection.Response rs = null; try { rs = conn.execute(); } catch (IOException e) { e.printStackTrace(); } return rs.body(); } }
结束了。