我正在尝试解析web服务中的html文档。根据谷歌,jsoup似乎是更快更容易的HTML解析器,所以我包含在我的项目中,但我得到异常“异常:java.lang.reflect.InvocationTargetException消息:java.lang.reflect.InvocationTargetException”< / strong>我已经尝试了一切,但没有给出结果。请帮忙
我在项目的libray类路径中添加了jsoup.jar。 我在Windows XP上使用Eclipse Luna Java 1.7 apache tomcat 7.0
这是我的代码:
try {
url = new URL("http://consulta.muniguate.com/emetra/despliega.php?tplaca="+tplaca+"&nplaca="+nplaca);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = rd.readLine()) != null) {
result += line;
}
Document doc = Jsoup.connect(result).get();
String title= doc.title();
System.out.println(title);
rd.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
这是完整的代码:
package clases;
import java.io.BufferedReader;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.InvocationTargetException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import org.jsoup.Connection.Method;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
@WebService(serviceName = "Transito")
public class Transito {
@WebMethod(operationName = "consultar_saldo")
public String consultar_saldo(String tplaca, int nplaca) throws InvocationTargetException {
String result = "";
try {
Document doc= Jsoup.connect("http://www.muniguate.com/utilities/remisiones.htm?tplaca="+tplaca+"&nplaca="+nplaca).userAgent("Mozilla").get();
String result = doc.title();
System.out.println(result);
} catch (Exception e){
e.getCause();
}
return result;
}
}
答案 0 :(得分:0)
Jsoup.connect()
接受网址字符串,而非响应内容
答案 1 :(得分:0)
“我已经尝试了一切,但没有结果。”
在这种情况下,你注定要失败,因为我们没有什么可以尝试的。
但我们假设你没有尝试过一切。让我们假设documentation of Jsoup.connect()
实际上是在告诉true,并且此方法仅用于创建应该解析的资源的连接,而不是解析它。其get()
方法作业从创建的Connection连接到资源,解析它并将其作为Document
返回。
所以这种方法代替HTML文本的资源,需要像URL这样的连接所需的信息。
因此,不是手动创建HttpURLConnection
并读取其HTML代码,而是将表示URL的字符串传递给Jsoup.connect()
,然后使用get()
连接并解析此资源。
所以而不是
URL url = new URL("http://consulta.muniguate.com/emetra/despliega.php?tplaca="+tplaca+"&nplaca="+nplaca);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader rd = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String line = null;
String result = "";
while ((line = rd.readLine()) != null) {
result += line;
}
只需使用
Document doc = Jsoup.connect("http://consulta.muniguate.com/emetra/despliega.php?tplaca="+tplaca+"&nplaca="+nplaca).get();
现在你应该可以使用
了String title = doc.title();
System.out.println(title);