AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Mit IdHttp (Indy) Text in Feld auf Webseite eintragen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit IdHttp (Indy) Text in Feld auf Webseite eintragen

Ein Thema von Ginko · begonnen am 10. Apr 2013 · letzter Beitrag vom 12. Apr 2013
 
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Mit IdHttp (Indy) Text in Feld auf Webseite eintragen

  Alt 12. Apr 2013, 14:03
Hört sich interessant an!

Ich hab mal mit dem obigen Quelltext weiter gemacht und die Auswertung klappt jetzt sogar mit der XML-Komponente von Lazarus

Allerdings ist mir noch ein Problem aufgefallen. Die Antwortvorschläge kommen über den ResponseStream scheinbar nicht immer in gleichen Abständen rein.
Hier mal ein Beispiel mit Quelltext:

Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, IdHTTP, Forms, Controls, Graphics, Dialogs,
  StdCtrls, DOM, XMLWrite, XMLRead;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    IdHTTP1: TIdHTTP;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  XMLString: TStrings;
  SendStream, ResponseStream: TStringStream;
  TextToCheck, Str1: String;
  XMLDoc : TXMLDocument;
  i: Integer;
begin
  TextToCheck := 'Wass ist mit dem getartetn Teest'; // der Satz (oder Wort) welcher geprüft / korrigiert werden soll

  XMLString := TStringList.Create;
  try
    XMLString.Add('<?xml version="1.0" encoding="UTF-8"?>');
    XMLString.Add('<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">');
    XMLString.Add(' <text>' + TextToCheck + '</text>');
    XMLString.Add('</spellrequest>');

    IdHTTP1.Request.Accept := '*/*';
    IdHTTP1.Request.ContentType := 'text/xml';
    IdHTTP1.Request.Connection := 'Keep-Alive';
    IdHTTP1.HandleRedirects := True;

    SendStream := TStringStream.Create(XMLString.Text);
    ResponseStream := TStringStream.Create('');

    try
      IdHTTP1.Post('http://www.google.com/tbproxy/spell?lang=de', SendStream, ResponseStream);
      Memo1.Text:= ResponseStream.DataString;
    except
      on E: Exception do
      ShowMessage('Fehler: ' + E.Message);
    end;

    //ResponseStream in XML-Format wandeln
    ResponseStream.Position:= 0;
    XMLDoc:= Nil;
    ReadXMLFile(XMLDoc,ResponseStream);

    //Ausgabe der Wort-Vorschläge
    for i:= 0 to (XMLDoc.DocumentElement.ChildNodes.Count - 1) do
    begin
      Memo2.Lines.Add(utf8encode(XMLDoc.DocumentElement.ChildNodes.Item[i].FirstChild.TextContent)); //utf8encode wichtig ! sonst statt Umalauten nur '?'
    end;

  finally
    FreeAndNil(ResponseStream);
    FreeAndNil(XMLString);
    FreeAndNil(SendStream);
    FreeAndNil(XMLDoc);
  end;

end;

end.
Der Inhalt des ResponseStrings:

Code:
<?xml version="1.0" encoding="UTF-8"?><spellresult error="0" clipped="0" charschecked="32"><c o="0" l="4" s="1">Was   Ass   Fass   Hass   Wams</c><c o="17" l="9" s="0">gestarteten   gehärteten   getakteten   getasteten   gewarteten</c><c o="27" l="5" s="0">Teestd   Test   Teeast   Teeist   Teeost</c></spellresult>
Komisch wenn ich es aus der Memobox ausschneide und hier Einfüge stimmen die Abstände ja
Bei mir erscheinen die Vorschläge für 'getartetn' statt wie oben so:
Code:
gestarteten   gehärteten   getakteten   getastetengewarteten.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz