2014-06-08 2 views
1

en essayant d'obtenir des métadonnées icecast avec dart sur le côté serveur des choses.Comment obtenir un en-tête icecast avec dart

J'ai un objet avec une méthode pour récupérer les métadonnées.

pour obtenir les métadonnées dont j'ai besoin pour envoyer une requête HttpRequest au serveur icecast avec un en-tête spécial. Si son serveur icecast propper, je devrais obtenir un en-tête de réponse avec la paire clé/valeur « glacial metaint », « Offset »

mon code de fléchette jusqu'à présent.

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) { 

    }); 

mais maintenant je ne sais pas comment envoyer réellement la demande ou si c'est même la bonne approche.

Toute aide serait grandement appréciée.

Répondre

2

Je pense que vous devez fermer la demande pour l'envoyer réellement.

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) { 
}); 

Avez-vous envisagé d'utiliser Client depuis le package http? (Comme montré ici How to do POST in Dart command line HttpClient)

+0

Merci, votre suggestion que je pourrais le faire fonctionner. Vous devez en fait rétrograder le request.close() pour envoyer la requête et remplir la réponse. – arkhon

2

Voici un exemple de travail (avec la suggestion de: Günter Zö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()); 
    }); 
Questions connexes