Verbindung Android - IPS

Hallo,

mir gefaellt das Webfront leider nicht so sehr, ich wuensche mir, dass ich wie im Dashboard alles selbst platzieren kann. Da in Kuerze wohl einige sehr bezahlbare Android-Tablets erscheinen werden, haette ich extrem gerne eine Art „Dashboard for Android“. Gibt es nicht, also bleibt nur selbst schreiben…

Nun scheitere ich leider direkt am Anfang. Ich konnte bis dato kein Java, habe aber 20 Jahre Programmiererfahrung, sodass das recht schnell klappt. Java ist nunmal die Sprache der Wahl, wenn es um Android geht.

Woran ich aber scheitere ist, per SOAP den IPS-Server anzufragen. Die PHP-Beispiele aus der Doku funktionieren tadellos, aber mit Java sehe ich nur Fragezeichen… Erschwerend kommt hinzu, dass Android kein SOAP vorsieht. Ich habe bisher nur das gefunden: ksoap2-android - Project Hosting on Google Code bzw. My Solution: Caling SOAP 1.1. Web Services from Android (ksoap2 + apache http) - Android Developers | Google Groups.

Ist hier jemand, der durchschaut wie’s gehen koennte und bereit waere, mir einen Codeschnipsel zu schreiben, der irgendwas grundlegendes implementiert? Beispielsweise die „Android-Java“-Version von

$soap = new SoapClient("http://127.0.0.1:3773/wsdl/IIPSSimpleKernel");
$result = $soap->GetKernelVersion();
echo "KernelVersion: ".$result;

Ich - und vielleicht auch viele andere - waere extrem dankbar dafuer. Oder gibt es ggf. sogar schon irgendein Projekt, welches aehnliches plant/umsetzt?

Morgen

Genau das gleiche wollt ich als Android Handy Benutzer auch probieren und bin auch an der Soap einbindung gescheitert. (Wobei ich auch erst jetzt mit Java anfange)

Hoffe wir finden jemanden der sich damit auskennt und uns auf die Sprünge hilft oder eine anderen Weg hat um mit IPS zu „reden“.

Gruß Jannis

Nun ja, die Frickelloesung waere, ich stricke einen Server in PHP, der vom Tablet Befehle annimmt und als SOAP-Request an IPS weiterleitet. Die Kommunikation zwischen Tablet und PHP-Server wuerde dann auf anderem Wege laufen. Technisch kein Problem, wuerde auch sicherlich funktionieren, ist aber nicht wirklich eine schoene Loesung

Ich schaue mir gerade die Möglichkeit an, mit einem Android Phone Soap-Requests abzusetzen. Leider bietet das SDK keine native Möglichkeit webclient requests abzusetzen.

KSOAP2 scheint hier eine Lösung zu sein.

Hier stoße ich jedoch an meine Kenntnisse in der Java-Programmierung und XML-Auswertung.

Ein sehr gutes Tutorial für die SOAP-Programmierung via KSOAP2 ist:
Android WebService01 on Vimeo

Wie im Video beschrieben werden initial Informationen über die Schnittstelle benötigt. Die habe ich für mich mal so übertragen um die License-Information vom Server abzuholen.


	private static final String SOAP_ACTION = "http://localhost/GetLicensee";
	private static final String METHOD_NAME = "GetLicensee";
	private static final String NAMESPACE = "http://localhost/";
	private static final String URL = "http://<meinserver>:3773/soap/IIPSLicensePool";

Die insgesamte Funktion würde wie folgt aussehen:


	public String getIPSLicense()
	{
		try {
	        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
	 
	        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
	        //envelope.dotNet = true;
	        envelope.setOutputSoapObject(request);

	        AndroidHttpTransport aht = new AndroidHttpTransport(URL);
	        aht.call(SOAP_ACTION, envelope);
	 
	        SoapPrimitive result = (SoapPrimitive)envelope.getResponse();
	        return result.toString();
	        //handle result here
	 
	    } catch (Exception e) {
	        return e.getMessage();
	    }
	}

Leider bekomme ich nur Fehlermeldungen via „Expected END_TAG“ oder „Expected START_TAG“…

Evtl. hat jemand eine Idee, ob ich die Schnittstelle mit falschen Infos gefüttert habe…

  • Was für eine Envelop-Version nutzt IP-Symcon? 1.0? 1.1? 1.2?
  • Ist das eine dot.net Schnittstelle?
  • Ist http://<meinserver>:3773/soap/IIPSLicensePool die richtige URL um die Requests abzusetzen? NICHT das WSDL-File sondern die direkte Schnittstelle…

Viele Grüße
Sascha

Habe keine Ahnung von SOAP, steht noch auf meiner ToDo-Liste - insoferm, wenn ich jetzt Müll frage, please forgive!

Wenn ich von einem „entfernten“ PC/Device aus mit IPS kommunizierenwill, warum dann SOAP und nicht Socket oder UDP als Protokoll verwenden?

Das funzt in sehr vielen Programmiersprachen und ist damit im Prinzip sogar „portabel“.

Oder ist SOAP sooooo genial einfach/schnell/whatsoever?

jwka

Naja, ist doch ganz einfach: mit SOAP kannst Du direkt aus einer Anwendung Variablen setzen etc.; mit einem Socket müsste IPS dann erst wieder aktiv werden, was ja unnötig ist. Ist doch ein Lieblingsthema von Dir: Ressourcen schonen. :smiley:

SOAP ist eine Socketverbindung per TCP. Darüber werden die Daten in einem standardisierten XML-Format übertragen, auf der Empfängerseite eine bestimmte Funktion ausgelöst und die Antwort wieder in XML eingewickelt und zurück übertragen. Es ist deswegen auch interoperabel zwischen verschiedenen Betriebssystemen, aber auch eine Menge Übertragungsoverhead. Dafür braucht man sich als Entwickler keine Gedanken mehr über Protokolle und remote procedure calls zu machen . Man benutzt einfach die Libs.
Tommi

Ich hab mal mit einer Lösung auf Basis von Delphi begonnen. Bin aber kaum dazu gekommen es zu erweitern. Im Grunde ein kleiner HTTP-Server, der auf den SOAP-Server zugreift, sowie eine Software zu visuellen Gestaltung der Oberfläche.

Falls sich jemand dazu berufen fühlt… drop me a mail.

Michael

Gibt’s hier schon weitere Resultate? Inzwischen gibt’s bei ELV ein Tablet mit Android 2.3 für unter 100 EUR …

jwka

Ich wüsste was ich täte.

Hmmm.

Dann fühl ich mich jetzt doch mal berufen … hatte das eher auf Kompetenz zu helfen bezogen, wofür ich eher nicht tauglich sein dürfte.

Thx.
jwka