Cómo gestionar las solicitudes POST en un controlador de protocolo conectable

Seleccione idioma Seleccione idioma
Id. de artículo: 280522 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

Resumen

A veces es conveniente tener un protocolo conectable como destino de las solicitudes POST de formulario. En este artículo se describe cómo controlar las solicitudes de publicación en un controlador de protocolo conectable de asincrónica (APPH).

Más información

El APPH recibe los datos de envío (por medio de URLMON) desde el cliente como parte de la estructura BINDINFO, como se describe en el siguiente artículo en Microsoft Knowledge Base:
165800 PostMon.exe muestra cómo usar URL Moniker para enviar datos
Además, el tipo MIME de los datos de envío se puede recuperar mediante el método IInternetBindInfo::GetBindString con un primer parámetro de BINDSTRING_POST_DATA_MIME.

Con esta información, puede utilizar el código siguiente para obtener los datos POST de método de IInternetProtocol::Start() de un APPH:
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()
				

Referencias

Para obtener información adicional, consulte los artículos siguientes en Microsoft Developer Network:
Visión general de los protocolos conectables asincrónicos
http://msdn2.Microsoft.com/en-us/library/Aa767916.aspx

Para obtener más información acerca de cómo desarrollar soluciones basadas en Web para Microsoft Internet Explorer, visite los siguientes sitios Web de Microsoft:
http://msdn.Microsoft.com/IE/

http://support.Microsoft.com/IEP

Propiedades

Id. de artículo: 280522 - Última revisión: domingo, 9 de febrero de 2014 - Versión: 4.0
La información de este artículo se refiere a:
  • Service Pack 1 de Microsoft Internet Explorer 4.01
Palabras clave: 
kbnosurvey kbarchive kbhowto kburlmon kbmt KB280522 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 280522

Enviar comentarios

 

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