1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. mkl, 23.04.2012 #1
    mkl

    mkl Threadstarter Fortgeschrittenes Mitglied

    Hallo,

    ich habe folgendes probiert:

    WebService in Java

    Wenn ich exakt das gleiche Projekt in Java erstelle und den Client ebenso in Java erstelle funktioniert alles Problemlos. Wenn ich hingegen den Client nicht in Java erstelle sondern als Android-Projekt hagelt es mir Exceptions...

    Da der localhost im Emulator ein anderer ist, verwende ich die verwiesene IP-Adresse 10.0.2.2:8080 statt localhost:8080.

    Der angepasste Clientcode sieht demnach so aus:

    Code:
    @WebServiceClient(name = "CalculatorService", targetNamespace = "http://Webserver_V2.daimler.de/", wsdlLocation = "http://10.0.2.2:8080/calculator?wsdl")
    public class CalculatorService
        extends Service
    {
    
        private final static URL CALCULATORSERVICE_WSDL_LOCATION;
        private final static WebServiceException CALCULATORSERVICE_EXCEPTION;
        private final static QName CALCULATORSERVICE_QNAME = new QName("http://Webserver_V2.daimler.de/", "CalculatorService");
    
        static {
            URL url = null;
            WebServiceException e = null;
            try {
                url = new URL("http://10.0.2.2:8080/calculator?wsdl");
            } catch (MalformedURLException ex) {
                e = new WebServiceException(ex);
            }
            CALCULATORSERVICE_WSDL_LOCATION = url;
            CALCULATORSERVICE_EXCEPTION = e;
        }
    
        public CalculatorService() {
            super(__getWsdlLocation(), CALCULATORSERVICE_QNAME);
        }
    ...
    
    Der App habe ich natürlich auch die Permission gegeben ins Internet zu gehen, daran sollte es also nicht liegen...

    Folgende Exceptions fange ich:

    Code:
    
    04-23 09:22:32.464: E/AndroidRuntime(1305): FATAL EXCEPTION: main
    04-23 09:22:32.464: E/AndroidRuntime(1305): java.lang.NoClassDefFoundError: de.projekt.webserver_v2.CalculatorService
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at de.projekt.Webserver_V2_Client_Android.Main.onCreate(Main.java:16)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at android.os.Handler.dispatchMessage(Handler.java:99)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at android.os.Looper.loop(Looper.java:123)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at android.app.ActivityThread.main(ActivityThread.java:3683)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at java.lang.reflect.Method.invokeNative(Native Method)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at java.lang.reflect.Method.invoke(Method.java:507)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    04-23 09:22:32.464: E/AndroidRuntime(1305):     at dalvik.system.NativeStart.main(Native Method)
    04-23 09:22:35.944: I/Process(1305): Sending signal. PID: 1305 SIG: 9
    
    
    Die Exceptions fangen an, wenn ich die Klasse CalculatorService erstellen will und dieser im Konstruktor die Basisklasse Service erstellen möchte:

    Code:
    
    public CalculatorService() {
            super(__getWsdlLocation(), CALCULATORSERVICE_QNAME);
        }
    
    
    Vielleicht sollte ich noch erwähnen, dass ich die JRE Library extra hinzufügen musste, da er mir die Befehle im generierten Clientcode sonst nicht kannte.

    Hoffe jemand von euch ist so schlau auf die passende Lösung zu kommen ich habs nun mehrere Stunden probiert...
     
  2. deek, 24.04.2012 #2
    deek

    deek Android-Experte

    Das KANN auf jeden Fall nicht funktionieren. Die komplette JRE in ein Android Projekt einbinden geht nicht, weil auf Android keine komplette JVM läuft, sondern "nur" die Dalvik VM.

    Dazu ist das Tutorial etwas kurz gehalten. Statt den kompletten Calculator zu importieren solltest du für diesen ein Interface schreiben und nur dieses importieren. Die Implementierung macht ja der Server.

    Noch was aus meinen Erfahrungen mit WebServices unter Android: Für welche Android Version baust du denn? Einige der Klassen die ich gebraucht habe waren erst ab 2.0 verfügbar. Wenn du also für 1.6 versuchst zu bauen kann das schief gehen. Ich habe mir damals (2.0 war noch nicht verbreitet) mit ksoap2 weitergeholfen. Ist aber sehr viel hässlicher als das native Java Zeug.

    Ansonsten kann ich dir Java Web Services: Up and Running: Amazon.de: Martin Kalin, Robert Romano: Englische Bücher empfehlen. Damit habe ich das ganze gebaut. Falls das eine Exemplar dass noch übrig ist bei Amazon vergriffen ist, schreib mir mal ne PM, vielleicht kann ich dir helfen.
     
    Zuletzt von einem Moderator bearbeitet: 17.06.2015
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Android Studio 4 Knöpfe nebeneinander Android App Entwicklung Dienstag um 16:30 Uhr
[OFFEN] Android app selber entwickeln mit Bluetooth Android App Entwicklung 13.10.2017
[Offen] Android Layout funktioniert nicht Android App Entwicklung 08.09.2017
[ERLEDIGT] LL zur Laufzeit erstellen, Abstand zwischen LL und LL möglich ? Android App Entwicklung 06.09.2017
[OFFEN] App schließt nach Öffnen sofort Android App Entwicklung 04.09.2017
[ERLEDIGT] Um einen Zusatz in einem Programm unter Android zu machen Android App Entwicklung 22.08.2017
[GESCHLOSSEN] Random ListItem ausgeben funktioniert nicht mehr Android App Entwicklung 13.08.2017
[OFFEN] Bild per Intent an ListView übergeben und anzeigen Android App Entwicklung 13.08.2017
[ERLEDIGT] Auffangen von nativen C Exeptions in Java Code? Android App Entwicklung 08.08.2017
[OFFEN] SVN Commit in Android Studio funktioniert nicht mehr Android App Entwicklung 07.08.2017
Du betrachtest das Thema "Webservice (Server Java, Client Android)" im Forum "Android App Entwicklung",