AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

IdHTTP in Android Release Modus

Ein Thema von mtle · begonnen am 18. Jun 2021 · letzter Beitrag vom 21. Jul 2021
Antwort Antwort
mtle

Registriert seit: 25. Jun 2010
2 Beiträge
 
Delphi 10.4 Sydney
 
#1

IdHTTP in Android Release Modus

  Alt 18. Jun 2021, 13:50
Hallo,
ich arbeite an einer Android (später auch IOS) App, die Dateien für den Offline-Modus bereitstellt.
Diese werden von einer Webseite geladen mit IdHTTP.

Das funktioniert auch alles unter Windows bzw auf Android im Debug-Modus. Sobald ich den Release Modus verwende, stürzt die Android-App beim ersten Online-Zugriff (IdHttp.Post/Get) ab. Berechtigungen sind identisch, der Abruf von zugehörigen Metadaten per RestClient funktioniert in der Release-Version. D.h. Zugriff auf Internet ist vorhanden.

Test Gerät läuft auf Android 11. Habe leider keine anderen Beiträge finden können, die mich einer Lösung näher gebracht haben.

LG
mtle
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
917 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: IdHTTP in Android Release Modus

  Alt 18. Jun 2021, 15:23
Geht es um https? Dann ist die Frage: Sind de SSL-Libraries im Release-Modus deployed? Diese muss man in beiden Konfigurationen in den Projekt-Deployment-Settings aufführen.
  Mit Zitat antworten Zitat
mtle

Registriert seit: 25. Jun 2010
2 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: IdHTTP in Android Release Modus

  Alt 21. Jun 2021, 07:48

Danke, manchmal übersieht man die einfachsten Dinge.
Hab nicht dran gedacht, daß die Bereitstellung auch "doppelt" konfiguriert werden muß.
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#4

AW: IdHTTP in Android Release Modus

  Alt 16. Jul 2021, 10:45
Ich habe gerade dasselbe Problem (Android App stürzt ab beim GET einer htpps Datei) jedoch arbeite ich nicht mit idHTTP sondern mit THTTPClient.
Damit sollten keine SSL Libs nötig sein.
Unter Windows klappt das einwandfrei, unter Android jedoch nicht.

Hier der Code:

Code:
procedure TFMain.FormCreate(Sender: TObject);
var
  mstream: TMemoryStream;

  function DownloadFile(const aURL: string; aStream: TStream): boolean;
  // THTTPClient benötigt im Gegensatz zu TidHTTP beim Download von htpps:// KEINE SSL Dateien!
  var
    vHTTP: THTTPClient;
  begin
    Assert(aStream <> nil);
    vHTTP := THTTPClient.Create;
    vHTTP.CustomHeaders['Pragma'] := 'no-cache';

    try
      Result := vHTTP.Get(aURL, aStream).StatusCode = 200;
    finally
      vHTTP.Free
    end
  end;

begin
  mstream := TMemoryStream.Create;

  try
    DownloadFile('https://www.[]', mstream);
    Memo1.Lines.LoadFromStream(mstream);
    mstream.Free;
  except
    // [kein Internet, lokal gespeicherten Dateiinhalt/Backup verarbeiten]
  end;

end
Steffen
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: IdHTTP in Android Release Modus

  Alt 16. Jul 2021, 11:34
Delphi-Quellcode:
procedure TFMain.FormCreate(Sender: TObject);
var
  mstream: TMemoryStream;

  function DownloadFile(const aURL: string; aStream: TStream): boolean;
  // THTTPClient benötigt im Gegensatz zu TidHTTP beim Download von htpps:// KEINE SSL Dateien!
  var
    vHTTP: THTTPClient;
    vResponse: IHTTPResponse;
  begin
    Result := False;
    Assert(aStream <> nil);
    vHTTP := THTTPClient.Create;
    try
      vHTTP.CustomHeaders['Pragma'] := 'no-cache';
      vResponse := vHTTP.Get(aURL, aStream);
      if Assigned(vResponse) then
      begin
        Result := vResponse.StatusCode = 200;
      end else
      begin
          // kluge Log-Möglichkeit, damit man mitbekommt, das keine Instanz von IHTTPResponse zurückkommt
      end;
    finally
      vHTTP.Free
    end;
  end;

begin
  mstream := TMemoryStream.Create;
  try
    try
      DownloadFile('https://www.[]', mstream);
      Memo1.Lines.LoadFromStream(mstream);
    except
      // [kein Internet, lokal gespeicherten Dateiinhalt/Backup verarbeiten]
    end;
  finally
    mstream.Free;
  end;
end;
Wie ist es denn so?
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.166 Beiträge
 
Delphi 12 Athens
 
#6

AW: IdHTTP in Android Release Modus

  Alt 16. Jul 2021, 12:46
Ich sehe da zwei Probleme.

1. Der Request ist blocking
http://docwiki.embarcadero.com/RADSt...g_its_Response
Deshalb sollte man das besser asynchron in einem Thread aufrufen.

2. In FormCreate sollte man unter Mobile nichts machen.
Besser auf FormShow warten, und da dann irgendwelche längerdauernden Tasks machen.

Wird Android blockiert, insbesondere beim Startup, ist das meistens eine Garantie dass dich das OS killt.
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:16 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