Использую 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;
}
Что я делаю не так, как правильно передавать спец. символы?