プラグ可能なプロトコル ハンドラーで POST 要求を処理するには、方法

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

280522
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
フォーム POST 要求の対象としては、プラグ可能なプロトコルに望ましい場合があります。この記事は、非同期のプラグ可能なプロトコル ハンドラー (APPH) で POST 要求を処理する方法を説明します。
詳細
APPH POST データで URLMON) はありません構造の一部としてクライアントから、次の資料、マイクロソフト サポート技術情報に記載されているようにされます。
165800 PostMon.exe は URL モニカーを使用してデータを POST する方法を示している
また、 IInternetBindInfo::GetBindStringメソッドは、BINDSTRING_POST_DATA_MIME の最初のパラメーターを使って、POST データの MIME タイプを取得できます。

ここまでの情報を APPH のIInternetProtocol::Start()メソッド内で POST データを取得するのには、次のコードを使用できます。
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 用の Web ベース ソリューションの開発の詳細については、次のマイクロソフト Web サイトを参照してください。

警告: この資料は、自動翻訳されています

プロパティ

文書番号:280522 - 最終更新日: 01/12/2015 17:08:38 - リビジョン: 5.0

  • Microsoft Internet Explorer 4.01 Service Pack 1
  • kbnosurvey kbarchive kbhowto kburlmon kbmt KB280522 KbMtja
フィードバック