有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

EclipseJava。朗。反思。使用jsoup时调用TargetException

我正在尝试解析Web服务中的html文档。根据谷歌的说法,jsoup似乎是更快更简单的html解析器,因此我将其包括在我的项目中,但我得到了异常“异常:java.lang.reflect.InvocationTargetException消息:java.lang.reflect.InvocationTargetException”我尝试了所有方法,但没有任何结果。请帮忙

我添加了jsoup。jar在我的项目的Library类路径中。 我正在Windows XP上使用Eclipse Luna Java1.7ApacheTomcat7.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;

   }
}    

共 (2) 个答案

  1. # 1 楼答案

    "I have tried everything, but nothings give results."

    那样的话,你就注定要失败,因为我们已经没有什么可以尝试的了

    但我们假设你并不是什么都试过。让我们假设documentation of ^{}实际上是在说真的,这个方法只用于创建到应该解析的资源的连接,而不是解析它。它的^{}方法用于从创建的连接连接到资源,对其进行解析并将其作为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);
    
  2. # 2 楼答案

    Jsoup.connect()接受url字符串,而不是响应内容