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?
Répondre
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();
}
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 –
I recently wrote a content negotiation library in F#. J'ai écrit un blog à ce sujet here.
Je ne comprends pas votre question. Peux-tu élaborer? –
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
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