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

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.

280522
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
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:

Advertencia: este artículo se ha traducido automáticamente

Propiedades

Id. de artículo: 280522 - Última revisión: 01/12/2015 17:08:36 - Revisión: 5.0

  • Service Pack 1 de Microsoft Internet Explorer 4.01
  • kbnosurvey kbarchive kbhowto kburlmon kbmt KB280522 KbMtes
Comentarios