Webbrowser截获POST数据和模拟POST提交数据
来源:互联网 发布:python 模拟按键 下单 编辑:程序博客网 时间:2024/05/21 01:51
1,Webbrowser截获POST数据
void __stdcall CBrowserWeb::OnBeforeNavigate2(IDispatch *pDisp, VARIANT *url, VARIANT *Flags,VARIANT *TargetFrameName,VARIANT *PostData,VARIANT *Headers,VARIANT_BOOL *Cancel){ATLASSERT(m_spWebBrowser2); /* 别的代码 *//* 以下此段为以字符串形式查看提交的POST数据*/if( PostData && PostData->vt == (VT_VARIANT|VT_BYREF) && PostData->pvarVal->vt != VT_EMPTY){//Cancel=VARIANT_TRUE;char *szTemp = NULL, *szPostData = NULL;long plLbound, plUbound;SAFEARRAY *parrTemp = PostData -> pvarVal->parray;SafeArrayAccessData(parrTemp , (void HUGEP **) &szTemp);SafeArrayGetLBound(parrTemp , 1, &plLbound);SafeArrayGetUBound(parrTemp , 1, &plUbound);szPostData = new char[plUbound - plLbound + 2];StrCpyA(szPostData, szTemp);//, plUbound - plLbound + 1);szPostData[plUbound-plLbound] = '\0';SafeArrayUnaccessData(parrTemp);Memo1->Lines->Add(szPostData);delete[] szPostData;}}
2,Webbrowser模拟POST提交数据,自己封装的Navigate2,直接调用此函数即可
HRESULT CBrowserWeb::Navigate2(LPCSTR szUrl,LPCSTR szPostData) { HRESULT hr; string strHeaders = "Content-Type: application/x-www-form-urlencoded\r\n";CComBSTR bstrURL(szUrl); CComVariant vHeaders;vHeaders.vt = VT_BSTR;vHeaders.bstrVal = SysAllocString(CComBSTR(strHeaders.c_str()).Detach());CComVariant vFlags;vFlags.vt = VT_I4;vFlags.lVal = navNoReadFromCache | navNoWriteToCache; CComVariant vTargetFrameName;//加上下面这段浏览器就会在一个新的窗口打开页面,几个参数都试过,//效果都一样,还没清楚是什么原因。 vTargetFrameName.vt = VT_BSTR;vTargetFrameName.bstrVal= SysAllocString(L"resultFrame");CComVariant vPostData;GetPostData(vPostData,szPostData);::Navigate(m_spWebBrowser2,bstrURL, &vFlags, &vTargetFrameName, &vPostData, &vHeaders); return TRUE; } HRESULT CBrowserWeb::GetPostData(CComVariant &vPostData,LPCSTR szPostData) { HRESULT hr; LPSAFEARRAY psa; psa = SafeArrayCreateVector(VT_UI1, 0, strlen(szPostData)); if (!psa) { return E_OUTOFMEMORY; }LPSTR pPostData;hr = SafeArrayAccessData(psa, (LPVOID*)&pPostData); memcpy(pPostData, szPostData, strlen(szPostData)); hr = SafeArrayUnaccessData(psa);vPostData.vt = VT_ARRAY | VT_UI1; vPostData.parray = psa; return S_OK; }
0 0
- Webbrowser截获POST数据和模拟POST提交数据
- PHP模拟GET和POST提交数据
- WebBrowser使用POST方法提交数据
- php模拟post提交数据
- php模拟post提交数据
- php模拟post提交数据
- cURL模拟POST提交数据
- php模拟post提交数据
- Fiddler模拟post数据提交
- curl模拟post提交数据
- php模拟post提交提交json数据
- 如何使用Fiddler2模拟POST和Get提交数据
- GET和POST提交数据
- 在.NET 中模拟提交Post数据
- 使用php模拟post提交数据
- ASP模拟POST提交数据的方法
- java用HttpURLConnection模拟post提交数据
- Java模拟Post 提交表单数据
- linux sed 命令记录
- 前淘宝工程师谈12306
- 不使用库函数,实现字符串操作源码
- Gdiplus学习2——画笔与画刷
- Android应用程序升级后自动进入新版本
- Webbrowser截获POST数据和模拟POST提交数据
- 定点数与浮点数
- ARM Linux 3.x的设备树(Device Tree)
- Fragment Base Class
- 多态与虚函数
- 如何查看oracle客户端版本号是32位还是64位(转)
- Android Service学习之AIDL, Parcelable和远程服务
- AutoResetEvent 详解
- input子系统的实现