使用SAFEARRAY 封装数据进行POST.
SAFEARRAY * psa; //定义safearray
SAFEARRAYBOUND rgsabound[1]; //根据数组的维数来定义几个数组元素,本例是一个一维数组
rgsabound[0].cElements = postLen; //数组的元素个数
rgsabound[0].lLbound = 0; //数组起始下标
psa = SafeArrayCreate(VT_UI1, 1, rgsabound); // 定义一维数组。
//psa = SafeArrayCreateVector(VT_UI1, 0, postLen); //和上一命令行功能相同。
if(!psa)
return E_FAIL;
BSTR HUGEP * pbstr;
HRESULT hr = SafeArrayAccessData(psa, (void HUGEP* *)&pbstr); //访问数组内容,获取数组元素的起始地址存入变量pbstr中。//lock
if (FAILED(hr))
return E_FAIL;
memcpy(pbstr, postStr, postLen); //给数组赋值。
SafeArrayUnaccessData(psa);//unlock
VARIANT postData;
postData.vt = VT_ARRAY | VT_UI1;
postData.parray = psa;
CComBSTR bstrUrl = "http://cn.yahoo.com";
VARIANT headers;
headers.vt = VT_BSTR;
headers.bstrVal = BSTR(L"Content-Type: application/x-www-form-urlencoded\r\n");
//定义header信息,必须发送。
mWebBrowser2->Navigate(bstrUrl, NULL, NULL, &postData, &headers); //发送数据
分享到:
相关推荐
vb safearray vb safearray
使用SAFEARRAY传递二进制数据
本文档主要讲述的是SafeArray使用;SafeArray是VB中的数组存储方式。通过SafeArray,可以在VC++和VB间相互调用。SafeArray也是Automation中的标准数组存储方式。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友...
比如三层架构中通常需要将使用的ClientDataSet数据集传出,那么就可以将DataSet转换为SafeArray,再由其他模块转换接收。 ===============================================================================
使用的COM进程外组件传递的SafeArray型数组。在客户端生成,在服务端接收并进行处理,然后返回到客户端。供新手参考。
使用SafeArray对Excel导入/导出(区域读写数据),比使用单元格循环读写速度快上一百倍以上,经过测试整个工作表65526*10的数据区域,导入时间与导出时间就35秒钟左右,速度上与读写普通的文本文件有得比,基本能让人满意....
SAFEARRAY 是很难理解的数据结构,并且资料很少,这个代码有操作SAFEARRAY类型的代码,存入和取出。
VB指针葵花宝典之SafeArray
采用Variant的SafeArray数据类型可以实现二进制数据的交换,通过SafeArrayCreateVector创建数据缓存空间,SafeArrayAccessData锁定内存数据块,SafeArrayUnaccessData解除内存数据块的锁定,SafeArrayDestroy释放...
CSgxVariant封装了VARIANT,具备以下主要功能:1)使用方便,最多4维数组的支持;2)使用VARIANT数组类似于CArray、vector,也类似与Vb中的动态数组;3)支持CArray、vector与VARIANT的转换(1~4维)。代码适用于VC...
SafeArray 在ADO编程中经常使用。它的主要目的是用于automation中的数组型参数的传递。因为在网络环境中,数组是不能直接传递的,而必须将其包装成 SafeArray。实质上SafeArray就是将通常的数组增加一个描述符,说明...
SAFEARRAY的相关使用
COM中使用SAFEARRAY数组例程,代码中给了两种数组的用法,一种是字符串数组,另一种是自定义数据结构数组。
上面代码的测试程序
Variant输入出参数,ocx传递byte数组,safearray使用方法,vc写ocx在vb下调用
Using a Multidimensional SAFEARRAY to pass data across from COM objects这个例子使用多维的SAFEARRAY结构收集COM对象(5KB)
见我的文章: VB真是想不到系列之四:VB指针葵花宝典之SafeArray http://www.csdn.net/develop/list_article.asp?author=AdamBear
因业务需要,把涉及到java与com交互的基本数据类型都测试了一般, 其中包括了byte、int、float、double、boolean、string,还有...其中数组比较特殊,需要jacob提供的SafeArray对对象进行封装。 详细参见www.waylau.com
{ CComVariant cv(i+1);//数组:1,2,3 ... size ::SafeArrayPutElement(psa, &i, &cv);...为什么实际上是一个简单至极的int数组却要用VT_ARRAY | VT_VARIANT类型呢? 其实这都是为了支持脚本环境,最好是使用VARIANT,OK?