Войти

Способ обработки запросов POST в обработчике подключаемый протокол

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

280522
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
Иногда желательно иметь в качестве цели запросов POST формы подключаемый протокол. В этой статье описываются способы обработки запросов POST в обработчике асинхронных подключаемый протокол (APPH).
Дополнительная информация
APPH получает данные POST (через URLMON) от клиента как часть структуры BINDINFO, как описано в следующей статье базы знаний Майкрософт:
165800 PostMon.exe демонстрируется использование моникера URL-адрес для отправки данных
Кроме того тип MIME данных POST могут быть получены с помощью метода IInternetBindInfo::GetBindString с первым параметром BINDSTRING_POST_DATA_MIME.

С этой информацией фона можно использовать следующий код для получения данных POST в методе IInternetProtocol::Start() 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()				
Ссылки
За дополнительной информацией обратитесь к следующим статьям Microsoft Developer Network на:
Обзор асинхронные подключаемые протоколы
http://msdn2.Microsoft.com/en-us/library/Aa767916.aspx

Дополнительные сведения о разработке решений с использованием интернет-технологий для Microsoft Internet Explorer см. на веб-узлах корпорации Майкрософт по следующим адресам:

Предупреждение: эта статья переведена автоматически

Свойства

Номер статьи: 280522 — последний просмотр: 01/12/2015 17:08:41 — редакция: 5.0

  • Microsoft Internet Explorer 4.01 Service Pack 1
  • kbnosurvey kbarchive kbhowto kburlmon kbmt KB280522 KbMtru
Отзывы и предложения