Entwickler-Ecke

Internet / Netzwerk - idHTTP1.Get('http://www.google.com') - Error


Comp-Freak - Do 10.05.07 13:56
Titel: idHTTP1.Get('http://www.google.com') - Error
ich krieg ein error when ich

Delphi-Quelltext
1:
idHTTP1.Get('http://www.google.com');                    

ausfuere.
Der error lautet: http\1.0 302 found.
und dan muss ich auf OK clicken...
irgendeine idee wo der fehler liegen koennte.

bzw. 302(error/exception) - Temporery Moved

Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt


Andreas L. - Do 10.05.07 14:03

Also erstmal musst du der Get-Routine noch einen Stream übergeben in dem die Daten von google.com abgelegt werden sollen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
 fs: TFileStream;
begin

 fs := TfileStream.create('C:\temp.txt', fmCreate);
 IdHttp1.get('http://www.google.com', fs);
 fs.free;

end;


Das erklärt zwar nicht deinen Fehler aber vllt. behebt es trotzdem das Problem ;-)


Comp-Freak - Fr 11.05.07 13:09

immer noch das gleiche problem :(. das problem handelt sich warscheinlich um das protokoll 1.0 html. mus mann da irgendwas in den idhttp optionnen sezten?
bzw. gehts auch mit string := get(url);?


GTA-Place - Fr 11.05.07 13:36

Liegt daran, dass Google.com dich auf Google.de verweisen will. Um das zu erlauben, musst du idHTTP1.HandleRedirects auf True setzen.

Falls du Google.com haben willst und nicht Google.de, dann nimm als URL: http://www.google.com/ig?hl=en

Und Ja, das geht auch.


Comp-Freak - Sa 12.05.07 02:21

woa du bist der beste ! :) *kanns nicht glauben*
nur noch eine kliztekleine frage: fas ist idthttp.TAG?

edit: ueber get(Url) krieg ich bei google/yahoo/msn suche komische ergebnisse. (wieso?)
ueber tfilestream gehts aber ich brauch das ergebniss in einem string. wie geht das?


GTA-Place - Sa 12.05.07 08:50

Tag gibt es bei jeder Komponente:
DOH hat folgendes geschrieben:
Tag hat keine vordefinierte Bedeutung. Die Eigenschaft Tag steht zur freien Benutzung durch Entwickler zur Verfügung. Sie können in dieser Eigenschaft zusätzliche Informationen über die Komponente in Form einer Ganzzahl speichern oder die Eigenschaft in einen 32-Bit-Wert, wie z.B. in eine Komponentenreferenz oder einen Zeiger, umgewandelt werden.


So kriegst du das ganze in einen String, wenn du einen Stream verwendest:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  MStream: TMemoryStream;
  aStr: String;
begin
  MStream := TMemoryStream.Create;

  idHTTP1.Get('http://www.google.com/search?hl=en&q=SUCHWORT', MStream);

  MStream.Position := 0;

  SetLength(aStr, MStream.Size);
  MStream.Read(Pointer(aStr)^, MStream.Size);

  MStream.Free;
end;


Allerdings sollte bei aStr := idHTTP1.Get(); das selbe rauskommen wie hier.


Comp-Freak - Sa 12.05.07 10:25

nichts geholfen :( ich krieg bei manchen links und bei such engines immer noch keine ergebnisse :( bin wieder auf get(url) umgestiegen weils einfacher ist. benuezten die search engine villeicht php oder liegts nicht da dran? bei mihr landet google immer wieder hier: http://www.google.com/search?hl=de&q=test&lr= stat hier: http://www.google.com/search?hl=en&ie=ISO-8859-1&q=test und ich krieg bei dehm ersten url den gleichen source wie bei http://www.google.com.


Regan - Sa 12.05.07 12:13

also ich weiß ja nicht, wie du suchst, aber ich würde dir das empfehlen:

Delphi-Quelltext
1:
'http://www.google.de/search?&q='+Suchwort+'&ie=iso-8859-1&hl=de&meta=lr%3Dlang_de'                    


Comp-Freak - Sa 12.05.07 12:48

problem geloest :) google hat probleme mit der non-cookie option (komisch).