これを行う簡単な方法はありdart:io
ますか?
HttpClient と HttpServer を調べましたが、URL を受け取って Web サイトのマークアップの文字列を返す関数を作成できませんでした。
String getHtml(String URL) {
...
}
これに使用する API について、誰かが私を正しい方向に向けることができますか?
これを行う簡単な方法はありdart:io
ますか?
HttpClient と HttpServer を調べましたが、URL を受け取って Web サイトのマークアップの文字列を返す関数を作成できませんでした。
String getHtml(String URL) {
...
}
これに使用する API について、誰かが私を正しい方向に向けることができますか?
http
パッケージは試しましたか?pubspec.yaml ファイルに追加します。
dependencies:
http: any
次に、パッケージをインストールして、次のように使用します。
import 'package:http/http.dart' as http;
main() {
http.read('http://google.com').then((contents) {
print(contents);
});
}
post
、get
、などの他のメソッドもありhead
、より便利に一般的に使用できます。
これは私が作成しようとしていた関数を直接示しているわけではありませんが、返された HTML が出力されており、目的の効果が得られています。
これでうまくいくことがわかりました:
import 'dart:io';
import 'dart:async';
main() {
HttpClient client = new HttpClient();
client.getUrl(Uri.parse("http://www.example.com/"))
.then((HttpClientRequest request) {
// Prepare the request then call close on it to send it.
return request.close();
})
.then((HttpClientResponse response) {
Stream<String> html = new StringDecoder().bind(response);
html.listen((String markup) {
print(markup);
});
});
}
Dart に詳しい人が問題を見つけたら、ためらわずに編集してください。
エラー処理なし:
var request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
request.Method = "GET";
request.AllowAutoRedirect = false;
request.KeepAlive = true;
request.ContentType = "text/html";
/// Get response from the request
using (var response = (System.Net.HttpWebResponse)request.GetResponse()) {
System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream());
return reader.ReadToEnd();
}
または、より単純な WebClient クラスを使用する場合は、http: //msdn.microsoft.com/en-us/library/system.net.webclient.aspxを参照してください。
System.Net.WebClient wc = new System.Net.WebClient();
var html = wc.DownloadString(url);