背景
小編相信編寫過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(); } }
結束了。