Показать сообщение отдельно
  #3  
Старый 02.02.2016, 13:57
i1j1k1 i1j1k1 вне форума
Прохожий
 
Регистрация: 01.02.2016
Сообщения: 3
Версия Delphi: Delphi XE 7
Репутация: 10
По умолчанию Заключение

В общем, разобрался. Попутно всплыла проблема с тем, что ответ приходил в Windows-1251, а должен был отображаться как utf-8. В результате жестокого и беспощадного перебора был рожден этот, так сказать, код, работающий в моём случае. Возможно, кому-то пригодится.
Код:
function StrAnsiToUtf(aStr: string): string;
var
 Encoding, aEncoding: TEncoding;
 Buffer: TBytes;
begin
 Encoding := TEncoding.UTF8;
 aEncoding := TEncoding.Default;
 Buffer := Encoding.GetBytes(aStr);
 TEncoding.Convert(aEncoding, Encoding, Buffer);
 Result := aEncoding.GetString(Buffer);
end;

procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  IdHTTp1:=TIdHTTP.Create(nil);
  IdHTTp1.Request.UserAgent:='Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.12';
  IdHTTp1.Request.Host:=sname;
  IdHTTp1.Request.ContentType := 'text/plain; charset=windows-1251';  st:=StrAnsiToUtf(IdHTTp1.Post('http://'+sname+'/MarcWeb/Exe/OPACServletBody.exe',Request.ContentFields));
  Response.Content:=Response.Content+ st;
end;
Ответить с цитированием