簡體   English   中英

解析android應用中的問題的html

[英]parsing html with issues in android app

我正在嘗試使用Jsoup在Android應用程序中解析網頁的html,但此特定頁面遇到了問題: http ://techmvs.technion.ac.il/cics/wmn/wmngrad?ORD =1

這個字符串:

<!doctype html public "-//ietf//dtd html 3.0//en">:

當我嘗試在下一條代碼行中執行Jsoup連接時,它顯然不是一個出現在標題部分中:

Response r = Jsoup.connect("http://techmvs.technion.ac.il/cics/wmn/wmngrad?ORD=1").followRedirects(true).execute();

它似乎將此錯誤的標頭作為具有空名稱和空值的標頭,從而導致異常,這是堆棧:

W: java.lang.IllegalArgumentException: Header name must not be empty
W:     at org.jsoup.helper.Validate.notEmpty(Validate.java:102)
W:     at org.jsoup.helper.HttpConnection$Base.header(HttpConnection.java:292)
W:     at org.jsoup.helper.HttpConnection$Response.processResponseHeaders(HttpConnection.java:828)
W:     at org.jsoup.helper.HttpConnection$Response.setupFromConnection(HttpConnection.java:772)
W:     at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:569)
W:     at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540)
W:     at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227)
W:     at gavi_anna_netanel.com.madomes.ug_login.GradesParser$GradesFetcher.getGradesList(GradesParser.java:48)
W:     at gavi_anna_netanel.com.madomes.ug_login.GradesParser$GradesFetcher.doInBackground(GradesParser.java:32)
W:     at gavi_anna_netanel.com.madomes.ug_login.GradesParser$GradesFetcher.doInBackground(GradesParser.java:28)
W:     at android.os.AsyncTask$2.call(AsyncTask.java:287)
W:     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
W:     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
W:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
W:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
W:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
W:     at java.lang.Thread.run(Thread.java:856)

重要的是要說它確實是一個JAVA項目(盡管壞的標頭也出現在html中)。

有沒有辦法告訴Jsoup忽略錯​​誤的標頭並仍然連接到url? 如果不是,是否有其他客戶端不會因為此錯誤的標頭而在android上失敗?

謝謝

您是否嘗試過使用XML解析器代替HTML解析器,而使用parseBodyFragment()代替parse()

Document doc = Jsoup.parseBodyFragment(html, "", Parser.xmlParser());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM