Re: IWebBrowser2::Navigate2 post variant
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 10.06.04 22:23
Оценка:
Здравствуйте, OverCrash, Вы писали:

OC>Hi all

OC>Собственно сабж.
OC>каким таким непонятным вариантом засылается пост-дата

OC>в мсдн написано что The post data specified by PostData is passed as a SAFEARRAY Data Type structure. The variant should be of type VT_ARRAY and point to a SAFEARRAY Data Type. The SAFEARRAY Data Type should be of element type VT_UI1, dimension one, and have an element count equal to the number of bytes of post data.


OC>мож кусочком кода кто поделится ?


Могу привести для C++ Builder:
// *Method 1*
  TVariant vtEmpty;
  TVariant vtPostDataArray;
  char *str = "action=LogMeIn&username=MyName&password=MyPass";

  SAFEARRAY FAR *psa = NULL;
  SAFEARRAYBOUND sabound[48];
  sabound[0].cElements = strlen(str);
  sabound[0].lLbound = 0;
  psa = SafeArrayCreate(VT_UI1, 1, sabound);
  for(unsigned int n = 0; n < strlen(str); n++){
    SafeArrayPutElement(psa, (long*)0, (void*)str[n]);
  }
  
  vtEmpty.vt = VT_EMPTY;
  vtPostDataArray.vt = VT_ARRAY;
  vtPostDataArray.SetSAFEARRAY(psa);
// or vtPostDataArray=psa;

  TVariant vAddress = {"http://my.server/test/postresults.asp"};
  CppWebBrowser1->Navigate2(&vAddress, &vtEmpty, &vtEmpty, &vtPostDataArray, &vtEmpty);
  SafeArrayDestroy(psa);

// *Method 2*
  TVariant vtEmpty;
  char *str = "action=LogMeIn&username=MyName&password=MyPass";
  TSafeArrayDim1 dim(strlen(str));
  TSafeArrayUInt1 uint_array(dim);
  for(unsigned int n = 0; n < strlen(str); n++){
    uint_array[n]=str[n];
  }
 
  SAFEARRAY* sa = uint_array.Detach();
  SafeArrayCopy(sa, &uint_array);

  vtEmpty.vt = VT_EMPTY;
  TVariant vAddress = {"http://my.server/test/postresults.asp"};
  CppWebBrowser1->Navigate2(&vAddress, &vtEmpty, &vtEmpty, &sa, &vtEmpty);
  SafeArrayDestroy(sa);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.