Avatar billede pb1 Nybegynder
06. august 2008 - 15:25 Der er 13 kommentarer og
1 løsning

Brug af IdHTTP1.Get i consol program

hvorfor crash mit program hver gang jeg køre det?
Den kommer med windows har fundet en fejl vindue.. ingen problemer når jeg compiler det


program Test;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  IdHTTP,
  Windows,
  Winsock,
  Classes;

var
  IdHTTP1: TidHTTP;


begin
  IdHTTP1 := TIdHTTP.Create(nil);
  IdHTTP1.Get('https://xxxxx.dk/script.php'); // den crasher på denne line - hvorfor?
  IdHTTP1.Free;
  readln;
end.
Avatar billede mbsnet Nybegynder
06. august 2008 - 15:54 #1
readln; //hører vist ikke til der? Burde heller ikke være nødvendigt med winSock i uses.
Avatar billede pb1 Nybegynder
06. august 2008 - 16:09 #2
Okay. har fjernet det, men crasher stadig.
Avatar billede mbsnet Nybegynder
06. august 2008 - 16:24 #3
//Prøv med dette. Ellers kan jeg ikke hjælpe

function getHttpSrc(const aUrl:string):string;
begin
with tIdHttp.create(application) do begin
  try result:=get(aUrl) except result:='Error opening URL' end;
  free
end
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.text:=getHttpSrc('http://www.dr.dk/');
end;
Avatar billede kroning Nybegynder
06. august 2008 - 16:31 #4
Det er en https side du forsøger at hente, dvs. at du skal have sat SSL op inden du forsøger at hente filen.
Avatar billede pb1 Nybegynder
06. august 2008 - 20:20 #5
@kroning
Hvordan gør jeg det?
Avatar billede kroning Nybegynder
07. august 2008 - 00:39 #6
Du skal have fat i OpenSSL, dvs. 2 dll filer libeay32.dll og ssleay32.dll, se her:
http://www.indyproject.org/Sockets/SSL.EN.aspx

Her er koden jeg benytter i mit BiBoB WinSMS program. BiBoB har en Web service som man kan benytte til selv at udvikle sms programmer, og der benyttes SSL

var
IdHTTP: TIdHTTP;
IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL;
begin
  IdHTTP:=TIdHTTP.Create;
  IdSSLIOHandlerSocketOpenSSL:=TIdSSLIOHandlerSocketOpenSSL.Create;
  IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method:=sslvSSLv23;
  IdHTTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL;
.
.
Avatar billede kroning Nybegynder
07. august 2008 - 00:45 #7
Glemte noget,
husk at tilføje IdSSLOpenSSL til din uses
Avatar billede pb1 Nybegynder
07. august 2008 - 09:29 #8
Laver du ikke lige et svar kroning.

Hmm får 4 fejl.. why?

Undeclared identifier: 'TIdSSLIOHandlerSocketOpenSSL'
Missing operator or semicolon
Missing operator or semicolon
Missing operator or semicolon
Avatar billede kroning Nybegynder
07. august 2008 - 10:36 #9
Har du tilføjet IdSSLOpenSSL til din uses?
Jeg benytter Indy 10.1.5, måske hedder det noget andet hvis du benytter Indy 9
Avatar billede pb1 Nybegynder
07. august 2008 - 11:15 #10
ahh den hedder TIdSSLIOHandlerSocket hos mig.

Nu kan jeg compile, men crasher stadig... øv
Avatar billede kroning Nybegynder
07. august 2008 - 17:00 #11
Og du har placeret de 2 dll filer sammen med din exe fil?
Da jeg lavede mit program fandt jeg ud af at det kun virkede hvis jeg brugte TMemoryStream, men jeg bruger så også IdHTTP.Post('https://....

Men måske skal du bruge denne:
procedure Get(
    AURL: string;
    AResponseContent: TIdStream
);
Avatar billede pb1 Nybegynder
12. august 2008 - 09:57 #12
kroning laver du lige et svar.
Avatar billede kroning Nybegynder
12. august 2008 - 10:58 #13
ok, fik du det til at virke
Avatar billede pb1 Nybegynder
14. august 2008 - 15:22 #14
Nope.. men du har gjort din del.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester