2010-05-22 8 views
6

Existe-t-il une classe C# ou .NET pour gérer la négociation de contenu HTTP avec un agent utilisateur? Je voudrais être en mesure de fournir une liste de types de contenu acceptables, et avoir ceux négociés avec le navigateur pour trouver la meilleure correspondance.Existe-t-il une classe C# ou .NET pour gérer la négociation de contenu HTTP?

+0

Je ne comprends pas votre question. Peux-tu élaborer? –

+0

http://en.wikipedia.org/wiki/Content_negotiation La négociation de contenu fait partie de la spécification HTTP qui permet à un agent utilisateur (un navigateur) de lister les types de support pour qu'il accepte un document par ordre de "qualité". Donc, dans mon code, je voudrais passer dans les formats que je peux générer, et demander à la classe d'appliquer les règles de négociation de contenu définies dans la spécification et de me renvoyer le meilleur type de média à renvoyer. – Jamie

+0

Si mon application peut rendre un morceau de données en HTML, XHTML, XML, PDF ou JSON. J'ai besoin de savoir quel navigateur supporte, et en particulier celui qu'il considère comme la meilleure qualité. – Jamie

Répondre

0

Je pense que le mot user agent est un peu hors de votre question mais si vous voulez construire une requête à une certaine source (disons une api reposante). Vous pouvez utiliser le kit de démarrage WCF Rest (http://wcf.codeplex.com/) pour spécifier le type de contenu que vous souhaitez ou accepter:

HttpClient client = new HttpClient(new Uri("http://restfull/api/")); 
//this is XML but could be JSON or whatever the API can supply 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); 
var response = client.Get(path); 

if (response != null) 
{ 
    response.EnsureSuccessStatusCode(); 
    //this will be XML 
    string xml = response.Content.ReadAsString(); 
} 
+0

Il s'agit d'un code côté client, le PO pose des questions sur le code côté serveur. En outre, la négociation de contenu dans la WCF est actuellement interrompue: http://wcf.codeplex.com/workitem/40 –