Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2015, 13:57   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Потому что латиница не требует юникода, т.е. описываетя одним символом, а кириллица двумя.
Вообще по-моему тебе не стоит так формировать строку поста.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.07.2015, 13:59   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Почему с английским текстом все работает нормально, но если в запросе есть русский текст то ошибка:
Юникод же.
вникай в суть здесь:
Цитата:
Move(strPostData[1], Data^, Length(strPostData));
Человек_Борща вне форума Ответить с цитированием
Старый 06.07.2015, 16:14   #13
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вообще по-моему тебе не стоит так формировать строку поста.
А как стоит?
nibufep вне форума Ответить с цитированием
Старый 06.07.2015, 17:03   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попробуй просто запихни туда строку без создания вариантного массива.
В любом случае move() тут точно не помошник.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.07.2015, 17:44   #15
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Попробуй просто запихни туда строку без создания вариантного массива.
В любом случае move() тут точно не помошник.
Не понял не много, что полностью удалить строку:

Код:
Post := VarArrayCreate([0, Length(EncodedStr) - 1], varByte);
?
nibufep вне форума Ответить с цитированием
Старый 06.07.2015, 18:58   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да. не используй VarArray вообще.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.07.2015, 19:11   #17
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Да. не используй VarArray вообще.
Код:
var
i: Integer;
EncodedStr: string;
Header: OleVariant;
Post: OleVariant;
begin
EncodedStr := 'text=x';
//Post := VarArrayCreate([0, Length(EncodedStr) - 1], varByte);
for I := 1 to Length(EncodedStr) do
Post[I - 1] := Ord(EncodedStr[I]);
Header := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
WebBrowser1.Navigate('http://', EmptyParam,EmptyParam, Post, Header);
end;
Так?

Если да, то ошибка: "Invalid argument".
nibufep вне форума Ответить с цитированием
Старый 07.07.2015, 01:36   #18
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Скорее всего, данные в пост запросе нужно преобразовывать в процентное кодирование (percent-encoding). И наверно это нужно делать вручную с помощь функции HTTPEncode и декодировать с помощью HTTPDecode, если в этом будет необходимость.

Пример:
Код:
uses
  HTTPApp;

var a:string;
begin
  a:= HTTPEncode('Хелоу ворлд');
  Memo1.Lines.Add(a);
  a:= HTTPDecode(a);
  Memo1.Lines.Add(a);
end.
Только кодировать нужно будет отдельно каждое значение параметра, а не целиком все параметры передавать туда.

И если не ошибаюсь, то в ссылках на страницы сайтов и в параметрах POST не может быть unicode, все идет через percent-encoding.

Можете это сами проверить, перейдя по этим ссылкам:
https://ru.wikipedia.org/wiki/%D5%E5...E2%EE%F0%EB%E4
https://ja.wikipedia.org/wiki/%E3%81...B8%96%E7%95%8C
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 07.07.2015 в 01:50.
Krasiosoft вне форума Ответить с цитированием
Старый 07.07.2015, 09:19   #19
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Скорее всего, данные в пост запросе нужно преобразовывать в процентное кодирование (percent-encoding).
Браузер вообще не имеет методов для отправки POST-запросов.
Человек_Борща вне форума Ответить с цитированием
Старый 07.07.2015, 10:10   #20
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Браузер вообще не имеет методов для отправки POST-запросов.
Думаю, что до него не скоро дойдёт, что запрос серверу - это просто массив нужных байт, а браузер тут ни при чём.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправить POST запрос nibufep PHP 9 30.09.2015 17:26
Отправить POST-запрос на сервер sarmat84 Работа с сетью в Delphi 4 21.08.2012 10:44
SQL запрос на текущую запись SERG1980 БД в Delphi 5 12.11.2010 14:20
Как вставлять WordArt и TextBox на "текущую" страницу? Diego__ Microsoft Office Word 12 11.09.2009 18:08