使用代理的Java多线程post方法(使用Jsoup)

时间:2014-12-29 10:18:33

标签: java multithreading post proxy jsoup

您好我需要知道如何在多线程应用程序中使用Jsoup代理。当我尝试这个:

System.setProperty("http.proxyHost", myproxy); 
System.setProperty("http.proxyPort", myport);

它为我所做的所有威胁设置代理,我需要每个威胁使用自己的代理。这种GET方法很好用:

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("addres", port));
URL url = new URL("address");
URLConnection connect = url.openConnection(proxy);

BufferedReader br = new BufferedReader(new InputStreamReader(connect.getInputStream()));

String tmp;
StringBuilder sb = new StringBuilder();
while((tmp=br.readLine())!=null) sb.append(tmp);

Document c = Jsoup.parse(sb.toString());

但我不知道如何使用Jsoup在每个威胁中使用代理发送POST方法。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

来自JSoup docs

  

jsoup是一个用于处理真实HTML的Java库。它提供了一个非常方便的API,用于提取和操作数据,使用最好的DOM,CSS和类似jquery的方法。

因此,基本上Jsoup是为提取数据而创建的。但是,仍然可以执行POST个请求,但它不像GET个请求那么直接。

ocument doc = Jsoup.connect("http://www.facebook.com")
                   .data("field1", "value2")
                   .data("field2", "value2")
                   .userAgent("Mozilla") // Optional
                   .post();

为了使用代理解决这个问题,可以使用以下方法:

System.setProperty("http.proxyHost", "<proxy-host>");
System.setProperty("http.proxyPort", "<proxy-port>");

或者,对于https等价物:

System.setProperty("https.proxyHost", "<proxy-host>");
System.setProperty("https.proxyPort", "<proxy-port>");

关于此事,StackOverflow还有很多其他问题。退房: