1

これを行う簡単な方法はありdart:ioますか?

HttpClient と HttpServer を調べましたが、URL を受け取って Web サイトのマークアップの文字列を返す関数を作成できませんでした。

String getHtml(String URL) {
...
}

これに使用する API について、誰かが私を正しい方向に向けることができますか?

4

4 に答える 4

10

httpパッケージは試しましたか?pubspec.yaml ファイルに追加します。

dependencies:
  http: any

次に、パッケージをインストールして、次のように使用します。

import 'package:http/http.dart' as http;

main() {
  http.read('http://google.com').then((contents) {
    print(contents);
  });
}

postget、などの他のメソッドもありhead、より便利に一般的に使用できます。

于 2013-06-05T10:17:38.483 に答える
0

これは私が作成しようとしていた関数を直接示しているわけではありませんが、返された 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 に詳しい人が問題を見つけたら、ためらわずに編集してください。

于 2013-06-04T19:52:28.377 に答える
-1

エラー処理なし:

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);
于 2013-06-04T19:30:37.393 に答える