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

Переводы статьи Переводы статьи
Код статьи: 280522 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

Иногда желательно иметь в качестве цели запросов 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 см. на веб-узлах корпорации Майкрософт по следующим адресам:
http://MSDN.Microsoft.com/IE/

http://support.Microsoft.com/IEP

Свойства

Код статьи: 280522 - Последний отзыв: 20 июля 2013 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Internet Explorer 4.01 Service Pack 1
Ключевые слова: 
kbhowto kburlmon kbmt KB280522 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.
Эта статья на английском языке: 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