如何用飞镖获得冰球头球

时间:2014-06-08 19:40:37

标签: dart httprequest icecast

我试图在服务器端使用dart获取icecast元数据。

我的对象有一个方法来检索元数据。

获取我需要使用特殊标头向icecast服务器发送HttpRequest的元数据。 如果它是一个propper icecast服务器,我应该得到一个响应头,其中包含键/值对" icy-metaint"," offset"

到目前为止我的飞镖码。

HttpClient client = new HttpClient();
    print(Uri.parse(this.src));
    client.getUrl(Uri.parse(this.src))
    .then((HttpClientRequest request) {
        request.headers.add(HttpHeaders.USER_AGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36");
        request.headers.add("Icy-MetaData", "1");
    })
    .then((HttpClientResponse response) {

    });

但现在我不知道如何实际发送请求,或者它是否是正确的方法。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

我认为你需要关闭实际发送它的请求。

HttpClient client = new HttpClient();
    print(Uri.parse(this.src));
    client.getUrl(Uri.parse(this.src))
    .then((HttpClientRequest request) {
        request.headers.add(HttpHeaders.USER_AGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36");
        request.headers.add("Icy-MetaData", "1");
        return request.close(); // <= close the request
    })
    .then((HttpClientResponse response) {
});

您是否考虑过使用http包中的客户端? (如此处所示How to do POST in Dart command line HttpClient

答案 1 :(得分:2)

这是一个有效的例子(建议来自:GünterZöchbauer)

HttpClient client = new HttpClient();
client.getUrl(Uri.parse(this.src))
    .then((HttpClientRequest request) {
        request.headers.add(HttpHeaders.USER_AGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36");
        request.headers.add("Icy-MetaData", "1");
        return request.close();
    })
    .then((HttpClientResponse response) {
        if(response.headers.value("icy-metaint") != null) {
            this.offset = int.parse(response.headers.value("icy-metaint"));
        }
        print(offset.toString());
    });