AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke idHttp und Verwendung der URL
Thema durchsuchen
Ansicht
Themen-Optionen

idHttp und Verwendung der URL

Ein Thema von synAIRgy · begonnen am 21. Sep 2016 · letzter Beitrag vom 21. Sep 2016
Antwort Antwort
synAIRgy

Registriert seit: 27. Jan 2005
Ort: Nürnberg
4 Beiträge
 
Delphi 5 Enterprise
 
#1

idHttp und Verwendung der URL

  Alt 21. Sep 2016, 15:37
Hallo

Ich habe eine Download Programm mit der idHttp Kompo, das einwandfrei seit langem funktioniert solange ich bei der URL den vollen Namen verwende.

Will ich aber jetzt eine IP Addresse verwenden, weil der Server z.B. keinen DNS Eintrag hat, bekomme ich eine Allgemeine Schutzverletzung.
Also:
Code:
internetForm.idHTTP1.Head('http://myServer.de/customers/cycles/meineDatei.cfg')
geht einwandfrei

nicht aber
Code:
internetForm.idHTTP1.Head('http:// 78.47.15.67/customers/cycles/meineDatei.cfg')
und produziert eine Schutzverletzung

lasse ich die Datei weg, verwende also testweise nur:
Code:
internetForm.idHTTP1.Head('http:// 78.47.15.67);
läuft die Zeile ohne Schutzverletzung durch.

Hat jemand eine Idee dazu ??

vielen Dank
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#2

AW: idHttp und Verwendung der URL

  Alt 21. Sep 2016, 16:59
Ich habe keine Ahnung ob es daran liegt.

Aber nach http:// und der 7 ist ein Leerzeichen.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: idHttp und Verwendung der URL

  Alt 21. Sep 2016, 18:45
Es wäre interessant zu wissen, welche Exception genau geschmissen wird. Die Indys verraten eigentlich immer Recht genau, was das Problem war.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
nytaiceman

Registriert seit: 15. Dez 2005
Ort: Schweiz, Bern
58 Beiträge
 
Delphi XE3 Professional
 
#4

AW: idHttp und Verwendung der URL

  Alt 21. Sep 2016, 19:41
Ich hoffe das Leerzeichen in der URL ist nur ein Copy&Paste Fehler zum Eintrag ins Forum.

Folgender Codeschnippsel zeigt Dir die Fehlermeldung an (Bei mir ist kein ShowMessage im Einsatz sondern ein Logfile Manager). Ausserdem habe ich eine Funktion um einen Zufallspfad und Dateinamen zu generieren, aber ich denke den Sinn der Funktion ergibt sich und vielleicht hilft es Dir ja:

Delphi-Quellcode:
// === Get a filepath from HTTP ================================================
function GetHTTPfile(AQuery,AUser,APassword:String; var AResponseText:String; var AResponseCode:Integer; var AMimeType:String) : String;
// uses idHTTP, IdSSLOpenSSL, idURI, IdException, IdStack,
// System.SysUtils, System.StrUtils, Classes
var
 IdHTTP1 : TidHTTP;
 LHandler : TIdSSLIOHandlerSocketOpenSSL;
 lStream: TStringStream;
 httpGetString, sFilename : String;
 NewGUID: TGUID;
begin
 IdHTTP1 := TIdHTTP.Create(nil);
 IdHTTP1.Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';

 lStream := TStringStream.Create(Result);

 with IdHTTP1 do
 begin
  LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  IOHandler := LHandler;
  ReadTimeout := 30000;
// OnWork := // Add here event handler
// OnWorkBegin := // Add here event handler

// = Check for authentification
  if (length(AUser) < 1) or (length(APassword) < 1) then Request.BasicAuthentication := False else
  begin
    Request.BasicAuthentication := true;
    HTTPOptions := HTTPOptions +[hoInProcessAuth];
    Request.Username := AUser;
    Request.Password := APassword;
  end;

    httpGetString := TIdURI.URLDecode(AQuery);
    httpGetString := TIdURI.URLEncode(httpGetString);

  try
    WriteLog(1,'HTTP','URL=' +httpGetString);
    IdHTTP1.Get(TIdURI.URLEncode(httpGetString), lStream);
    AResponseCode := IdHTTP1.ResponseCode;
    AResponseText := IdHTTP1.ResponseText;
    AMimeType := IdHTTP1.Response.ContentType;
    lStream.Position := 0;
    CreateGUID(NewGUID); sFilename := GUIDToString(NewGUID);
    sFilename := // -> Put here estimated temporary filepath
    lStream.SaveToFile(sFilename);
    Result := sFilename;

  except

    on E: EIdHTTPProtocolException do
    begin
      AResponseCode := IdHTTP1.ResponseCode;
      AResponseText := IdHTTP1.ResponseText;
      ShowMessage('[ERROR] ' +'Indy raised a protocol error!' +' | '
        +'HTTP status code: ' + IntToStr(E.ErrorCode) +' | '
        +'Error message' + E.Message);
    end;

    on E: EIdConnClosedGracefully do
    begin
      AResponseCode := IdHTTP1.ResponseCode;
      AResponseText := IdHTTP1.ResponseText;
      ShowMessage('[ERROR] ' +'Indy reports, that connection was closed gracefully!');
    end;

    on E: EIdSocketError do
    begin
      AResponseCode := IdHTTP1.ResponseCode;
      AResponseText := IdHTTP1.ResponseText;
      ShowMessage('[ERROR] ' +'Indy raised a socket error!' +' | '
        +'Error code: ' + IntToStr(E.LastError) +' | '
        +'Error message' + E.Message);
    end;

    on E: EIdException do
    begin
      AResponseCode := IdHTTP1.ResponseCode;
      AResponseText := IdHTTP1.ResponseText;
      ShowMessage('[ERROR] ' +'Indy raised an exception!' +' | '
        +'Exception class: ' + E.ClassName +' | '
        +'Error message: ' + E.Message);
    end;

    on E: Exception do
    begin
      AResponseCode := IdHTTP1.ResponseCode;
      AResponseText := IdHTTP1.ResponseText;
      ShowMessage('[ERROR] ' +'A non-Indy related exception has been raised!');
    end;

  end;

 end; {httpclient}

  LHandler.Free;
  IdHTTP1.Disconnect;
  IdHTTP1.Free;
  FreeAndNil(lStream);
end;
Einfach ist nur einfach, wenn Einfach auch einfach ist!
Vermeintlich einfache Workarounds führen irgendwann zu Problemen!
  Mit Zitat antworten Zitat
Antwort Antwort

 

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:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz