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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2015, 16:28   #31
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от nibufep Посмотреть сообщение
Так запрос как GET уходит.
Можете показать код, который нормально отправлял POST? Тот, в котором только латинские буквы были.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 07.07.2015, 16:32   #32
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Можете показать код, который нормально отправлял POST? Тот, в котором только латинские буквы были.
Вот:

Код:
procedure TForm.Button1Click(Sender: TObject);
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://site', EmptyParam,EmptyParam, Post, Header);
end;
nibufep вне форума Ответить с цитированием
Старый 07.07.2015, 16:34   #33
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как вариант: Поменяй String на AnsiString.

P.S. Все равно что-то ты не то делаешь. Ерунда какая-то...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.07.2015, 16:51   #34
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от nibufep Посмотреть сообщение
Вот:

Код:
procedure TForm.Button1Click(Sender: TObject);
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://site', EmptyParam,EmptyParam, Post, Header);
end;
Код:
EncodedStr := 'text=x';
Допустим, нам нужно вместо x передать слово "Привет". Тогда вид будет такой:

EncodedStr := 'text='+HTTPEncode('Привет');
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 07.07.2015, 17:02   #35
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Код:
EncodedStr := 'text=x';
Допустим, нам нужно вместо x передать слово "Привет". Тогда вид будет такой:

EncodedStr := 'text='+HTTPEncode('Привет');
overflow while converting variant of type word into type byte
nibufep вне форума Ответить с цитированием
Старый 07.07.2015, 17:21   #36
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  EncodedStr: string;
  Header: OleVariant;
  Post: OleVariant;
begin
  EncodedStr := 'text='+HTTPEncode('Привет');
  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://site', EmptyParam,EmptyParam, Post, Header);
end;
У меня все отлично компилирует. Но у меня старенький Delphi 7.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 07.07.2015, 17:25   #37
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Посмотрите, что у Вас возвращает функция HTTPEncode. У меня это string, т.е. не unicode.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 07.07.2015, 17:37   #38
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  EncodedStr: string;
  Header: OleVariant;
  Post: OleVariant;
begin
  EncodedStr := 'text='+HTTPEncode('Привет');
  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://site', EmptyParam,EmptyParam, Post, Header);
end;
У меня все отлично компилирует. Но у меня старенький Delphi 7.
А вот стало отправлять, просто случайно вставил не в тот пример. Спасибо! Только вот проблема появилась, возможно кто-то знает, в mysql "Привет!" записывается как: Привет! а при выводе на страницу уже отображается нормально "Привет!" (но только если кодировка файла UTF-8 если ANSI то крякозябры тоже). С чем это может быть связано?

Последний раз редактировалось nibufep; 07.07.2015 в 17:39.
nibufep вне форума Ответить с цитированием
Старый 07.07.2015, 17:40   #39
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Ещё раз повторюсь, unicode-символ занимает 2 байта. На Delphi 7 проблем не будет, т.к. string там AnsiString, а на версии > 2007, string уже UnicodeString. Проблема при создании массива и при помещении строки в массив с использованием move (что быстрее, чем цикл по символам).
Можно ещё HTTP-кодировать (как русские ссылки кодируются, так и тут), тогда тоже проблему решит.

Цитата:
в mysql "Привет!" записывается как: Привет!
Кодировка в базе не правильно выставлена. Но думаю это не так важно, если из базы выводит нормально.
Человек_Борща вне форума Ответить с цитированием
Старый 07.07.2015, 18:09   #40
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от nibufep Посмотреть сообщение
записывается как: Привет!
Это UTF-8, который мы захотели прочесть как ANSI. Т.е. в базу он сохраняет в UTF-8, а средство, которое отображает информацию с базы, думает, что там ANSI.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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