Come gestire le richieste POST in un gestore di protocollo innestabile

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

280522
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sommario
In alcuni casi è auspicabile disporre di un protocollo di collegamento come destinazione di richieste di invio di FORM. In questo articolo viene descritto come gestire le richieste POST in un gestore di protocollo innestabile asincrona (APPH).
Informazioni
Il APPH riceve i dati POST (in URLMON) dal client come parte della struttura BINDINFO, come descritto nel seguente articolo della Microsoft Knowledge Base:
165800 PostMon.exe viene illustrato come utilizzare il Moniker di URL da dati POST
Inoltre, il tipo MIME dei dati POST può essere recuperato utilizzando il metodo IInternetBindInfo::GetBindString con un primo parametro di BINDSTRING_POST_DATA_MIME.

Con queste informazioni di base, è possibile utilizzare il codice riportato di seguito per ottenere i dati POST all'interno del metodo IInternetProtocol::Start() di 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()				
Riferimenti
Per ulteriori informazioni, vedere i seguenti articoli su Microsoft Developer Network:
Cenni preliminari sui protocolli innestabili asincrona
http://msdn2.microsoft.com/en-us/library/Aa767916.aspx

Per ulteriori informazioni sullo sviluppo di soluzioni basate su Web per Microsoft Internet Explorer, visitare i seguenti siti Web Microsoft:

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 280522 - Ultima revisione: 02/08/2014 04:50:40 - Revisione: 4.0

  • Microsoft Internet Explorer 4.01 Service Pack 1
  • kbnosurvey kbarchive kbhowto kburlmon kbmt KB280522 KbMtit
Feedback