したがって、クラスファイル内に次のコードがあります。
Document requestData (String url, [String postVars, bool pauseApp = false, onSuccess(Document ht)]) {
HttpRequest html = new HttpRequest();
html.open((postVars == null ? 'GET' : 'POST'), url, async: !pauseApp);
html.send(postVars);
if (pauseApp == true) { return html.responseXML; }
else { html.on.readyStateChange.add((Event e) {
if (html.readyState == HttpRequest.DONE && (html.status == 200 || html.status == 0)) {
try {
//HERE IS WHERE THE ISSUE IS ----V
DOMParser d = new DOMParser();
onSuccess(d.parseFromString(html.responseText,"text/html"));
}
catch (e) {
print("Error on requestData($url) async = $pauseApp - $e");
}
}
});
}
}
(参照用のソース全体: http://pastebin.com/z21PM7r0 - クロスサーバーリクエストを許可するために dartium フラグ「--disable-web-security」を使用しています)
問題は基本的に、リクエスト responseXML が null を返すのに対し、responseText は期待どおり HTML を返すことです。これに対抗するために、DOM パーサーを使用しようとしましたが、失敗しました。
接続する必要があるサーバーを所有または管理していないため、html を自分で修正することはできません。私が推測する問題は、その形式が正しくないためです。
上記の関数を使用して解析しようとしている Web サイトのコードは次のとおりです: http://pastebin.com/KvMN9AuF
W3 Validator の結果: 193 エラー、16 警告
この問題に対処する方法を知っている人はいますか? それとも、これは諦めるしかないのでしょうか...