26.03.2010, 01:48 | #1 |
Участник
|
"Microsoft Web Browser" ActiveX control, проблема с передачей данных
Использую ActiveX контрол "Microsoft Web Browser" следующим образом:
X++: COMVariant flags; COMVariant targetFrameName; COMVariant postData; COMVariant headers; str headersStr = 'Content-Type: application/x-www-form-urlencoded\r\n'; ; flags = COMVariant::createFromInt64(0); targetFrameName = COMVariant::createFromStr(''); postData = COMVariant::createFromArray(element.str2array(text)); headers = COMVariant::createFromStr(headersStr); WebBrowser.Navigate(url, flags, targetFrameName, postData, headers); Не могу понять, как правильно закодировать переменную text для postData. Если text == "+1&2+3&4", то плюсы и амперсанды при передаче исчезают: "1,2 3,4". Интернет подсказал, что надо менять плюс на %2B, а амперсанд на %26, но почему-то у меня при передаче они не преобразуются обратно в плюсы и амерсанды, а так и приходят: "%2B1%262%2B3%264" Вот код используемой функции str2array() X++: Array str2array(str _data) { Array arr; int i; ; //_data = strreplace(_data, num2char(160), ' '); //_data = strreplace(_data, '%', '%25'); _data = strreplace(_data, '&', '%26'); _data = strreplace(_data, '+', '%2B'); arr = new Array(Types::Enum); for (i = 1; i <= strlen(_data); i++) arr.value(i, char2num(_data, i)); return arr; } Что я делаю не так, как правильно передавать спец. символы? |
|
Теги |
activex, com-объект, internet explorer |
|
|