Omgaan met POST-aanvragen in een Pluggable Protocol-Handler

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 280522 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Samenvatting

Soms is het wenselijk dat een pluggable-protocol als het doel van het formulier POST-aanvragen. In dit artikel beschreven hoe u POST-aanvragen in een asynchrone pluggable protocol-handler (APPH) verwerkt.

Meer informatie

De APPH ontvangt de POST-gegevens (door middel van URLMON) van de client als onderdeel van de BINDINGSINFORMATIE structuur, zoals beschreven in het volgende artikel in de Microsoft Knowledge Base:
165800 PostMon.exe geeft aan hoe u URL-Moniker aan POST-gegevens
Bovendien kan het MIME-type van de POST-gegevens worden opgehaald met behulp van de methode IInternetBindInfo::GetBindString met de eerste parameter van BINDSTRING_POST_DATA_MIME.

Deze achtergrondinformatie kunt u de volgende code voor de POST-gegevens in een APPH van de IInternetProtocol::Start() -methode:
STDMETHODIMP CMyPlugProt::Start(
        LPCWSTR szUrl,
        IInternetProtocolSink *pIProtSink,
        IInternetBindInfo *pIBindInfo,
        DWORD grfSTI,
        DWORD dwReserved)
{

	// Retrieve POST data.
	// m_bindinfo and m_bindf are members of the CMyPlugProt class, declared as:
	// 	BINDINFO m_bindinfo;
	// 	DWORD m_bindf;

	m_bindinfo.cbSize = sizeof(BINDINFO);
	if (pIBindInfo)
		hr = pIBindInfo->GetBindInfo(&m_bindf, &m_bindinfo);
	
	switch (m_bindinfo.dwBindVerb)
	{
	case    BINDVERB_POST:
		void *pData;
		UINT cPostData;	// Post data size.
		
		if (m_bindinfo.stgmedData.tymed != TYMED_HGLOBAL)
			break;
		
		cPostData = m_bindinfo.cbstgmedData;
		if (!cPostData)
			break;
		
		pData = GlobalLock(m_bindinfo.stgmedData.hGlobal);
		if (pData)
		{
			// Allocate space to store the POST data if required.
			// For instance, a member variable, m_postData, 
			// declared as "BYTE *m_postData;", could be used 
			// as below:
			// 	m_postData = new BYTE[cPostData];
			// 	memcpy(m_postData, pData, cPostData);
			
			// After checking the data, unlock buffer.
			GlobalUnlock(m_bindinfo.stgmedData.hGlobal);
			
			// Retrieve MIME type of the post data.
			LPOLESTR pszMIMEType;	
			ULONG dwSize;
			hr = pIBindInfo->GetBindString(
				BINDSTRING_POST_DATA_MIME, &pszMIMEType, 1, &dwSize);
			
			if(hr == S_OK)
			{
				// pszMIMEType now contains the MIME type of the post data.
				// This would typically be "application/x-www-form-urlencoded" 
				// for a POST. In general, it could be any (standard or 
				// otherwise) MIME type. Many of the standard MIME type strings 
				// are #defined in <URLMon.h>. For instance, CFSTR_MIME_TEXT 
				// is L"text/plain".
				
				// Store the MIME type in a member variable here, if required.

				// Finally, free pszMIMEType via CoTaskMemFree.
				if (pszMIMEType)
				{
					CoTaskMemFree(pszMIMEType);
					pszMIMEType = NULL;
				}
			}
			else
			{
				// Assume "application/x-www-form-urlencoded".
			}
			
		}
		
		break;
		
	default:
		// It's a GET.
		break;
	}

}	// End of function STDMETHODIMP CMyPlugProt::Start()
				

Referenties

Raadpleeg de volgende artikelen in de Microsoft Developer Network voor meer informatie:
Asynchrone Pluggable verificatieprotocollen-overzicht
http://msdn2.Microsoft.com/en-us/library/Aa767916.aspx

Ga naar de volgende Microsoft-websites voor meer informatie over het ontwerpen van weboplossingen voor Microsoft Internet Explorer:
http://msdn.Microsoft.com/ie/

http://support.Microsoft.com/IEP

Eigenschappen

Artikel ID: 280522 - Laatste beoordeling: zaterdag 20 juli 2013 - Wijziging: 3.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Internet Explorer 4.01 Service Pack 1
Trefwoorden: 
kbhowto kburlmon kbmt KB280522 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.
De Engelstalige versie van dit artikel is de volgende: 280522
Vrijwaring inhoud KB-artikelen over niet langer ondersteunde producten
Dit artikel heeft betrekking op producten waarvoor Microsoft geen ondersteuning meer biedt. Daarom wordt dit artikel alleen in de huidige vorm aangeboden en wordt het niet meer bijgewerkt.

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com