Jak zpracovat požadavky POST v popisovač Zapojitelný protokol

Překlady článku Překlady článku
ID článku: 280522 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

V některých případech je žádoucí mít Zapojitelný protokol jako cíl požadavky POST formuláře. Tento článek pojednává o způsobu zpracování požadavků POST v obslužné rutině asynchronní Zapojitelný protokol (APPH).

Další informace

APPH přijme od klienta v rámci struktury VAZBĚ dat (formou URLMON), jak je popsáno v následujícím článku znalostní báze Microsoft Knowledge Base:
165800 PostMon.exe ukazuje použití zástupného názvu URL na POST Data
Navíc MIME Typ dat lze získat pomocí metody IInternetBindInfo::GetBindString s prvním parametrem BINDSTRING_POST_DATA_MIME.

S těmito informacemi pozadí můžete použít následující kód POST data z v rámci metody IInternetProtocol::Start() APPH získat:
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()
				

Odkazy

Další informace naleznete v následujících článcích na Microsoft Developer Network:
Přehled asynchronní připojitelné protokoly.
http://msdn2.microsoft.com/en-us/library/Aa767916.aspx

Další informace o vytváření webových řešení pro aplikaci Microsoft Internet Explorer naleznete na následujících webech společnosti Microsoft:
http://msdn.microsoft.com/ie/

http://support.microsoft.com/IEP

Vlastnosti

ID článku: 280522 - Poslední aktualizace: 30. ledna 2014 - Revize: 4.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Internet Explorer 4.01 Service Pack 1
Klíčová slova: 
kbnosurvey kbarchive kbhowto kburlmon kbmt KB280522 KbMtcs
Strojově přeložený článek
DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.
Projděte si také anglickou verzi článku: 280522

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