我已经在一个项目工作了将近五个月,直到现在我还没有看到任何失败,例如:“java.nio.charset.IllegalCharsetNameException:iso-8859-1”在JSoup connect尝试期间。我不知道这是否只是巧合,但最奇怪的是当它在try中触发失败时,catch永远不会被执行。我在SO上看到了这个其他主题java.nio.charset.IllegalCharsetNameException: iso-8859-1,但是我无法理解它会如何影响我的代码,因为我没有使用解析器。
代码:
private void nodesConnection(String nodeRequest, boolean automaticQuery){
try{
CONNECTED_NODE = nodeRequest;
JSOUP_CONNECTION = Jsoup.connect(CONNECTED_NODE)
.userAgent("Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0")
.cookie("auth", "token")
.timeout(5000)
.get();
} catch(IOException e){
System.out.println("This is on Node Request " + e.getMessage());
}
}
失败打印:
Exception in thread "Query Thread" java.nio.charset.IllegalCharsetNameException: iso-8859-1"
at java.nio.charset.Charset.checkName(Unknown Source)
at java.nio.charset.Charset.lookup2(Unknown Source)
at java.nio.charset.Charset.lookup(Unknown Source)
at java.nio.charset.Charset.forName(Unknown Source)
at org.jsoup.helper.DataUtil.parseByteData(DataUtil.java:87)
at org.jsoup.helper.HttpConnection$Response.parse(HttpConnection.java:498)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:154)
at com.sh.st.request.http.NodeRequests.nodesConnection(NodeRequests.java:60)
at com.sh.st.request.http.NodeRequests.<init>(NodeRequests.java:42)
at com.sh.st.request.http.*.listQueryLinks(*.java:254)
at com.sh.st.request.http.QueryBaseBuilder.<init>(QueryBaseBuilder.java:44)
at com.sh.st.request.tool.SearchRequest.run(SearchRequest.java:100)
at java.lang.Thread.run(Unknown Source)
有谁知道什么是避免这种例外的可能解决方案,或者可以解释可能出现的问题?
答案 0 :(得分:1)
你是什么意思“我没有使用解析器。”? Jsoup是一个解析器。如果您的意思是不使用parse()方法,那么这并不意味着就Charset而言,get()与parse的行为不同。
来自文档
Document - get()
Execute the request as a GET, and parse the result.
试试这个
Connection.Response cr = Jsoup.connect(THE_URL)
.userAgent("Mozilla/5.0 (compatible; MSIE 10.6; Windows NT 6.1; Trident/5.0; InfoPath.2; SLCC1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727) 3gpp-gba UNTRUSTED/1.0")
.cookie("auth", "token")
.timeout(5000)
.execute();
Document d = Jsoup.parse(cr.body(), "ISO-8859-1");