![]() |
Wer nutzt unter Android auch WEB-Service?
Hallo zusammen,
ich nutze bei meiner APP einen WEB-Service, der eine Liste von Personen zurück geben soll. Ich bekomme da ständig eine Zugriffsverletzung. :cry: SuchePerson bekommt einen Namen z.B. 'Baron' und gibt Anrede, Vorname, Adresse etc. zurück. :thumb: SuchePersonen bekommt einen Namen z.B. 'Bar' und soll 'Baron', 'Barowski', 'Bartmann' zzgl. der anderen Attribute zurück geben. Der Aufruf SuchePerson klappt einwandfrei :thumb: , bei der Liste bekomme ich einen Fehler. :shock: Auf einer WIN32 Umgebung klappt es einwandfrei (gleicher Quellcode). :roll: Der WEB-Service gibt SuchePerson gibt diese Klasse als XML Struktur
Delphi-Quellcode:
Die Liste ist ein
TPersonalRem = class(TRemotable)
private FPersonal_ID : AnsiString; FPersonalnummer:AnsiString; FSuchbegriff:AnsiString; FAnrede:AnsiString; FName_1:AnsiString; FName_2:AnsiString; FStrasse:AnsiString; FPLZ:AnsiString; FOrt:AnsiString;
Delphi-Quellcode:
TPersonalRemArray = array of TPersonalRem; Hat jemand eine Idee? Gibt man bei Android Ergebnislisten anders zurück? Gruß Axel |
AW: Wer nutzt unter Android auch WEB-Service?
Was für ein Fehler? Wo?
Der nextgen Compiler kennt kein AnsiString und hat eine abwweichende Indizierung ( Index 1. Zeichen ist 0 nict 1) |
AW: Wer nutzt unter Android auch WEB-Service?
Kennt er doch. _PAnsiString bzw. MarshaledAString.
|
AW: Wer nutzt unter Android auch WEB-Service?
Zitat:
Sinnvollerweise stellt man auf (Unicode)Strings um. Vor allem eine Programmierspracheneigenheit in einer eigentlich programmiersprachenunabhängien Beschreibungssprache zu verwenden ist eigentlich schon ein grober Design/Definitionsfehler |
AW: Wer nutzt unter Android auch WEB-Service?
Hallo Bernhard,
danke für den Hinweis, ich habe AnsiString in UnicodeString geändert. Allerdings habe ich dadurch das Problem nicht gelöst. Ich bekomme unter Android eine Schutzverletzung, wenn ich den Web-Service aufrufe, der mir eine Struktur zurück geben soll. Die importierte WSDL erstellte mir die Klassen:
Delphi-Quellcode:
TPersonalRem = class; { "urn:TestIntf"[GblCplx] }
TPersonalRemArray = array of TPersonalRem; { "urn:TestIntf"[GblCplx] } // ************************************************************************ // // XML : TTTPersonalRem, global, <complexType> // Namespace : urn:TestIntf // ************************************************************************ // TTTPersonalRem = class(TRemotable) private FAnrede: string; FName_1: string; FName_2: string; FZusatz: string; FStrasse: string; FLKZ: string; FPLZ: string; FOrt: string; published property Anrede: string read FAnrede write FAnrede; property Name_1: string read FName_1 write FName_1; property Name_2: string read FName_2 write FName_2; property Zusatz: string read FZusatz write FZusatz; property Strasse: string read FStrasse write FStrasse; property LKZ: string read FLKZ write FLKZ; property PLZ: string read FPLZ write FPLZ; property Ort: string read FOrt write FOrt; end; Ich greife darauf so zu:
Delphi-Quellcode:
Was mich verwundert ist, dass unter Win32 alles einwandfrei funktioniert. Unter Android auf diversen Endgeräten funktioniert es nicht.
procedure TfrmPersonal7Zoll.btn1Click(Sender: TObject);
var myWS : ITest; Rio : THTTPRIO; emp1 : TPersonalRem; ans : TPersonalRemArray; i : integer; begin Rio := THTTPRIO.Create(nil); emp1 := TPersonalRem.Create; emp1.Name_1 := edSuchName_1.Text; // --------- aus Parameterobjekt ------------ Rio.WSDLLocation := 'http://192.168.178.16:8080/wsdl/ITest'; Rio.URL := 'http://192.168.178.16:8080/soap/IGetPersonalListeFilter'; Rio.Service := 'IGetPersonalListeFilterservice'; Rio.Port := 'IGetPersonalListeFilterPort'; // ---------- Aufruf der DeisterMethode --------------- try // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ans := (Rio as ITest).SuchePersonen(emp1); // Hier kommt die Schutzverletzung unter Android. Unter Win32 läuft es problemlos..... // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! for i := 0 to length(ans) - 1 do begin showmessage('Response :' + ans[i].Name_1 + ' ' + ans[i].Name_2); end; except on ER: Exception do begin showmessage(ER.Message); end; end; end; Gebe ich in einem anderem Service nur TPersonalRem zurück klappt es auch. Nur das Array TPersonalRemArray (Ein Array von TPersonalRem) als Rückgabe macht Probleme. Fragende Grüße Axel |
AW: Wer nutzt unter Android auch WEB-Service?
Ich habe vielleicht nicht genau geschaut, aber welche Delphi-Version nutzt Du. Es gibt z.b.
![]() |
AW: Wer nutzt unter Android auch WEB-Service?
Ich nutze XE5 Update 2 mit allen Hotfixes auf einem Samsung Tablet (SM-P605) mit Android 4.3.
|
AW: Wer nutzt unter Android auch WEB-Service?
Hallo Union,
ich habe mir jetzt die XE6 Trial geladen und da funktioniert es einwandfrei. Stellt sich nun die Frage, ob der Fehler auch in der XE5 gefixt wird. Oder ist nun die Strategie auf XE6 umzusteigen? Gruß Axel |
AW: Wer nutzt unter Android auch WEB-Service?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 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