Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использование Delphi для отправки данных в Bing и их отображения в TWebBrowser

Delphi , Интернет и Сети , Браузер

Вопрос, поднятый в данной теме, связан с использованием компонентов Indy для отправки данных на сервер Bing и последующим отображением результатов в компоненте TWebBrowser в среде Delphi. Это может быть полезно для интеграции поисковых запросов в различные приложения, работающие под управлением Delphi.

Отправка данных в Bing

Для отправки данных в Bing с помощью Indy используется следующий код:

function PostExample: string;
var
  lHTTP: TIdHTTP;
  lParamList: TStringList;
begin
  lParamList := TStringList.Create;
  lParamList.Add('q=test'); // Параметры запроса

  lHTTP := TIdHTTP.Create(nil);
  try
    Result := lHTTP.Post('http://www.bing.com/search?form=ANEWUI', lParamList);
  finally
    FreeAndNil(lHTTP);
    FreeAndNil(lParamList);
  end;
end;

Важно отметить, что URL для Bing должен быть корректным. Например, для поиска URL может отличаться от URL для других операций.

Отображение результатов в TWebBrowser

После получения ответа от Bing, задача состоит в том, чтобы отобразить результаты в компоненте TWebBrowser. Для этого можно использовать разные подходы.

Подход 1: Использование LoadDocFromString

Можно загрузить полученные данные непосредственно в документ TWebBrowser, используя следующий код:

procedure LoadBlankDoc(ABrowser: TWebBrowser);
begin
  ABrowser.Navigate('about:blank');
  while ABrowser.ReadyState <> READYSTATE_COMPLETE do
  begin
    Application.ProcessMessages;
    Sleep(0);
  end;
end;

procedure CheckDocReady(ABrowser: TWebBrowser);
begin
  if not Assigned(ABrowser.Document) then
    LoadBlankDoc(ABrowser);
end;

procedure LoadDocFromString(ABrowser: TWebBrowser; const HTMLString: WideString);
var
  v: OleVariant;
  HTMLDocument: IHTMLDocument2;
begin
  CheckDocReady(ABrowser);
  HTMLDocument := ABrowser.Document as IHTMLDocument2;
  v := VarArrayCreate([0, 0], varVariant);
  v[0] := HTMLString;
  HTMLDocument.Write(PSafeArray(TVarData(v).VArray));
  HTMLDocument.Close;
end;

Подход 2: Использование Memory Streams

Другой способ - использовать поток памяти для загрузки данных в TWebBrowser:

uses
  OleCtrls, SHDocVw, IdHTTP, ActiveX;

function PostRequest(const AURL: string; const AParams: TStringList;
  const AWebBrowser: TWebBrowser): Boolean;
var
  IdHTTP: TIdHTTP;
  Response: TMemoryStream;
begin
  Result := True;
  try
    AWebBrowser.Navigate('about:blank');
    while AWebBrowser.ReadyState < READYSTATE_COMPLETE do
      Application.ProcessMessages;

    Response := TMemoryStream.Create;
    try
      IdHTTP := TIdHTTP.Create(nil);
      try
        IdHTTP.Post(AURL, AParams, Response);
        if Response.Size > 0 then
        begin
          Response.Position := 0;
          (AWebBrowser.Document as IPersistStreamInit).Load(
            TStreamAdapter.Create(Response, soReference));
        end;
      finally
        IdHTTP.Free;
      end;
    finally
      Response.Free;
    end;
  except
    Result := False;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Params: TStringList;
begin
  Params := TStringList.Create;
  try
    Params.Add('q=test');
    if not PostRequest('http://www.bing.com/search?form=ANEWUI', Params, WebBrowser1) then
      ShowMessage('An unexpected error occured!');
  finally
    Params.Free;
  end;
end;

Важно помнить, что Bing может использовать защиту от автоматизированных запросов, и для легальной интерации потребуется согласие и возможно использование API Bing, а не прямой доступ к веб-странице.

Выбор между этими подходами зависит от конкретных требований вашего проекта и предпочтений в разработке. Оба метода позволяют загрузить результаты запроса в TWebBrowser, но подход с использованием Memory Streams может быть более предпочтителен в случае использования больших объемов данных или требования более высокой производительности.

Создано по материалам из источника по ссылке.

Тема связана с разработкой в среде Delphi, где используется компонент Indy для отправки запросов в сервис Bing и последующего отображения результатов в веб-браузере TWebBrowser.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:35:30/0.0037031173706055/0