Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Veel internetprotocollen op de toepassingslaag zijn gebaseerd op de uitwisseling van berichten in een eenvoudige, flexibele indeling met de naam Multipurpose Internet Mail Extensions (MIME). Hoewel MIME afkomstig is als standaard voor het uitwisselen van elektronische e-mailberichten, wordt het tegenwoordig gebruikt door een groot aantal toepassingen om wederzijds begrepen gegevensindelingen op te geven als MIME- of mediatypen. Het proces wordt mediatypeonderhandelinggenoemd.
Mediatypen zijn eenvoudige tekenreeksen die duiden op een type en subtype (zoals 'tekst/zonder opmaak' of 'tekst/HTML'). Ze worden gebruikt voor het labelen van gegevens of het kwalificeren van een aanvraag. Een webbrowser, bijvoorbeeld, als onderdeel van een HTTP-aanvraag voor gegevens of aanvraag-voor-informatie, geeft aan dat het aanvraagt 'image/gif' of 'image/jpeg' Media Types, waarop een webserver reageert door het juiste mediatype te retourneren en, als de aanroep een aanvraag voor gegevens was, de gegevens zelf in de aangevraagde indeling.
Mediatype-onderhandeling is vaak vergelijkbaar met de manier waarop bestaande bureaubladtoepassingen onderhandelen met het systeem klembord om te bepalen welke gegevensindeling moet worden geplakt wanneer een gebruiker bewerken/plakken of query's kiest voor indelingen bij het ontvangen van een IDataObject aanwijzer tijdens een slepen-en-neerzetten-bewerking. Het subtiele verschil in HTTP-mediatypeonderhandeling is dat de client niet van tevoren weet welke indelingen de server beschikbaar heeft. Daarom geeft de client vooraf de mediatypen op die worden ondersteund, in volgorde van de grootste kwaliteit en reageert de server met de best beschikbare indeling.
URL-monikers ondersteunen media-type onderhandeling als een manier voor internetclients en -servers om akkoord te gaan met indelingen die moeten worden gebruikt bij het downloaden van gegevens in BindToStorage--bewerkingen. Ter ondersteuning van mediatypeonderhandeling implementeert een client de IEnumFORMATETC-interface interface en roept de RegisterFormatEnumerator- functie aan om deze te registreren bij de bindingscontext. De indelings-enumerator bevat de indelingen die de client kan accepteren. Een URL-moniker vertaalt deze indelingen in mediatypen bij het binden aan HTTP-URL's.
De mogelijke mediatypen die door de client worden aangevraagd, worden weergegeven voor URL-monikers via FORMATETC- structuren die beschikbaar zijn via de IEnumFORMATETC- enumerator die is geregistreerd door de beller in de bindcontext: Elke FORMATETC een klembordindeling opgeeft waarmee het mediatype wordt geïdentificeerd. Het volgende codefragment geeft bijvoorbeeld aan dat het mediatype PostScript is.
FORMATETC fmtetc;
fmtetc.cfFormat = RegisterClipboardFormat(CF_MIME_POSTSCRIPT);
. . .
Een client kan de klembordindeling instellen op het speciale mediatype CF_NULL om aan te geven dat het standaardmediatype van de resource waarnaar de URL verwijst, moet worden opgehaald. Deze indeling is meestal de laatste indeling waarin de client geïnteresseerd is. Wanneer er geen enumerator is geregistreerd bij de bindingscontext, werkt een URL-moniker alsof een enumerator met één FORMATETC- met cfFormat=CF_NULL beschikbaar is en automatisch het standaardmediatype downloadt.
Welk mediatype ook moet worden gebruikt, de client wordt op de hoogte gesteld van de keuze door middel van het argument pformatetc op de IBindStatusCallback::OnDataAvailable methode. De callback vindt plaats in de context van de aanroep van de client naar BindToStorage.
Notitie
Als ontvangen inhoud van een niet-herkend mediatype is, roept de client automatisch RegisterMediaTypes aan om het nieuwe type te registreren.
Verwante onderwerpen