CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Stahl con ben 17 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: Stahl con ben 94 Thanks ricevuti negli ultimi sette giorni
Utente del mese: Stahl con ben 460 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 14
Discussione:

Client per web services

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Apr 2009
    Messaggi
    31

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Client per web services

    SALVE A TUTTI,
    ho bisogno del vostro aiuto esperto su Android.
    Spiego la questione per la mia tesi di Laurea stò sviluppando u framework di sviluppo client Web-services su Android.Il tool prende in input un wsdl si unservizio web, genera l'interfaccia e implementa i metodi per l'utilizzo del servizio. Successivamente dopo aver messo il servizio sul server (tomcat 6.0) tramite l'utilizzo di k2soap cerco di utilizzarlo con Android Ma l'emulatore mi termina il processo.

    ora vi posto il codice che non ho problemi a rendere publico sperando in una mano che mi permetta di laurearmi altrimenti avrò buttato 7 mesi della mia vita!!!

    Ho importato come Source Package le mie classi generate dal framework:
    package (Rubrica2)
    1)indirizzo.java
    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */

    package Rubrica2;

    /**
    *
    * @author Pc
    */
    public class indirizzo {

    private int numeroCiv;

    public void setnumeroCiv(int arg) {
    this.numeroCiv = arg;
    }

    public int getnumeroCiv() {
    return this.numeroCiv;
    }

    private java.lang.String strada;

    public void setstrada(java.lang.String arg) {
    this.strada = arg;
    }

    public java.lang.String getstrada() {
    return this.strada;
    }

    private java.lang.String citta;

    public void setcitta(java.lang.String arg) {
    this.citta = arg;
    }

    public java.lang.String getcitta() {
    return this.citta;
    }

    private java.lang.String provincia;

    public void setprovincia(java.lang.String arg) {
    this.provincia = arg;
    }

    public java.lang.String getprovincia() {
    return this.provincia;
    }

    private java.lang.String stato;

    public void setstato(java.lang.String arg) {
    this.stato = arg;
    }

    public java.lang.String getstato() {
    return this.stato;
    }

    private int zip;

    public void setzip(int arg) {
    this.zip = arg;
    }

    public int getzip() {
    return this.zip;
    }

    private Rubrica2.telefono telefono;

    public void settelefono(Rubrica2.telefono arg) {
    this.telefono = arg;
    }

    public Rubrica2.telefono gettelefono() {
    return this.telefono;
    }
    }
    2)telefono
    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */

    package Rubrica2;

    /**
    *
    * @author Pc
    */
    public class telefono {

    private int prefissoInt;

    public void setprefissoInt(int arg) {
    this.prefissoInt = arg;
    }

    public int getprefissoInt() {
    return this.prefissoInt;
    }

    private int prefissoArea;

    public void setprefissoArea(int arg) {
    this.prefissoArea = arg;
    }

    public int getprefissoArea() {
    return this.prefissoArea;
    }

    private int numero;

    public void setnumero(int arg) {
    this.numero = arg;
    }

    public int getnumero() {
    return this.numero;
    }
    }
    3)Rubrica.java(interfaccia)

    package Rubrica2;

    public interface Rubrica {
    public indirizzo aggiungiIndirizzo (indirizzo indirizzo, java.lang.String nome);

    public java.lang.String getIndirizzoByNome (java.lang.String nome);
    }
    4)RubricaSOAPBinding
    package Rubrica2;

    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope ;
    import org.ksoap2.transport.HttpTransport;

    public class RubricaSOAPBinding implements Rubrica {
    private String location;

    void setLocation(String location) {
    this.location = location;
    }

    public indirizzo aggiungiIndirizzo (indirizzo indirizzo, java.lang.String nome) {
    String _soapAction = "";
    String _namespace = "urn:Rubrica2";
    String _methodName = "aggiungiIndirizzo";
    String _url = this.location;
    Object _resultRequestSOAP = null;

    SoapObject request = new SoapObject(_namespace, _methodName);
    request.addProperty("indirizzo", indirizzo);
    request.addProperty("nome", nome);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    HttpTransport androidHttpTransport = new HttpTransport(_url);

    try {
    androidHttpTransport.call(_soapAction, envelope);
    _resultRequestSOAP = envelope.getResponse();
    } catch(Exception ex) {
    System.out.println("Exception Message: " + ex.getMessage());
    ex.printStackTrace();
    return null;
    }

    return (indirizzo)_resultRequestSOAP;
    }

    public java.lang.String getIndirizzoByNome (java.lang.String nome) {
    String _soapAction = "";
    String _namespace = "urn:Rubrica2";
    String _methodName = "getIndirizzoByNome";
    String _url = this.location;
    Object _resultRequestSOAP = null;

    SoapObject request = new SoapObject(_namespace, _methodName);
    request.addProperty("nome", nome);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    HttpTransport androidHttpTransport = new HttpTransport(_url);

    try {
    androidHttpTransport.call(_soapAction, envelope);
    _resultRequestSOAP = envelope.getResponse();
    } catch(Exception ex) {
    System.out.println("Exception Message: " + ex.getMessage());
    ex.printStackTrace();
    return null;
    }

    return (java.lang.String)_resultRequestSOAP;
    }
    }
    5)RubricaService (descrittore del servizio ,porta e webservices in attesa )
    package Rubrica2;

    /**
    *
    * @author Pc
    */
    public class RubricaService {


    public static Rubrica getRubricaSOAPBinding() {
    RubricaSOAPBinding tmp = new RubricaSOAPBinding();
    tmp.setLocation("http://127.0.0.1:8080/WebServer1Rubrica/");
    return tmp;
    }
    }


    Successivamente dopo aver creato un mio package ho modificato la classe MainActivity

    1)MainActivity.java
    package org.me.androidapplication;

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;

    import Rubrica2.*;

    /**
    *
    * @author Pc
    */
    public class MainActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    // ToDo add your GUI initialization code here
    TextView tv = new TextView(this);
    setContentView(tv);


    try
    {
    Rubrica rubService = (Rubrica)RubricaService.getRubricaSOAPBinding();

    String indirizzo = rubService.getIndirizzoByNome("ciao");

    tv.setText(indirizzo);
    }
    catch(Exception ex)
    {
    tv.setText(ex.getMessage());
    System.out.println(ex.getMessage());
    }
    catch(Error er)
    {
    tv.setText(er.getMessage());
    System.out.println(er.getCause());
    System.out.println(er.getMessage());
    }
    }

    }
    ----------------
    ----------------
    Purtoppo la chiamata
    Rubrica rubService = (Rubrica)RubricaService.getRubricaSOAPBinding();

    non viene proprio eseguita, l'emulatore stoppa il processo ,facendo debug wsu questa classe la console di netBeans mi dà questo errore :


    Attaching to localhost:8614
    Not able to submit breakpoint LineBreakpoint MainActivity.java : 23, reason: No source root found for URL 'file:/C:/Documents%20and%20Settings/Pc/Documenti/NetBeansProjects/AndroidSWClient/src/org/luca/androidswclient/MainActivity.java'. Verify the setup of project sources.
    Invalid LineBreakpoint MainActivity.java : 23


    Vi prego AIUTATEMI A LAUREARMI

  2.  
  3. #2
    Androidiano L'avatar di marcodave


    Registrato dal
    Sep 2009
    Messaggi
    78

    Ringraziamenti
    5
    Ringraziato 4 volte in 4 Posts
    Predefinito

    Ciao!
    Purtroppo non ho mai usato ksoap2, però prima di provarlo sulla piattaforma Android, hai verificato che il problema non sia legato alla chiamata al web service ?
    In altre parole, non è meglio se prima verifichi la correttezza della chiamata al servizio con un main() di test, che puoi fare direttamente nella classe RubricaService ?

    In alternativa, mi viene in mente che il problema potrebbe essere legato al fatto che l'emulatore non riesce a connettersi all'host in cui hai il servizio web.
    In effetti, dal tuo codice si evince che ti connetti a 127.0.0.1:8080, porta di default di Tomcat: forse l'emulatore si "confonde" e cerca di connettersi a se stesso, quando in realtà tu vuoi che si connetta alla macchina su cui gira il servizio.
    In altre parole, prova a sostituire a 127.0.0.1 il nome del pc, poi riferisci

    Ciao e in bocca al lupo per la laurea !

  4. #3
    Baby Droid


    Registrato dal
    Apr 2009
    Messaggi
    31

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Ciao MarcoDave,

    cosa intendi per nomePC

    ho provato anche con http://localhost:8080/WebServer1Rubrica/

  5. #4
    Androidiano L'avatar di marcodave


    Registrato dal
    Sep 2009
    Messaggi
    78

    Ringraziamenti
    5
    Ringraziato 4 volte in 4 Posts
    Predefinito

    Ciao luca,
    Il nome del pc è semplicemente quello che trovi nelle proprietà di sistema (pannello di controllo > sistema).
    Localhost non va bene perché è un alias di 127.0.0.1
    In pratica se il tuo pc si chiama 'lucapc' allora usi http://lucapc:8080
    Ciao!

  6. #5
    Baby Droid


    Registrato dal
    Apr 2009
    Messaggi
    31

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Ciao Marco,

    ho provato a cambiare il path del servizio in :

    nomePC:8080.......ma niente la console di android mi uccide nuovamente il processo.

    Ti posto la console di Debug di netBeans per capire alcune cose

    AndroidApplication Debug:
    init:
    deps-jar:
    Compiling 1 source file to C:\Documents and Settings\Pc\Documenti\NetBeansProjects\AndroidAppl ication\build\classes
    compile:
    Updating zip: C:\Documents and Settings\Pc\Documenti\NetBeansProjects\AndroidAppl ication\dist\AndroidApplication.apk_
    Using keystore: C:\Documents and Settings\Pc\.android\debug.keystore
    Deleting: C:\Documents and Settings\Pc\Documenti\NetBeansProjects\AndroidAppl ication\dist\AndroidApplication.apk_
    jar:
    pkg: /data/local/tmp/AndroidApplication.apk
    Success
    45 KB/s (5826 bytes in 0.125s)
    About to start org.me.androidapplication/org.me.androidapplication.AndroidWS
    Starting: Intent { comp={org.me.androidapplication/org.me.androidapplication.AndroidWS} }
    Attached JPDA debugger to localhost:8608
    debug:
    BUILD SUCCESSFUL (total time: 1 minute 7 seconds)

    Mentre la Debugger console scrive :
    Attaching to localhost:8608
    Not able to submit breakpoint LineBreakpoint MainActivity.java : 24, reason: No source root found for URL 'file:/C:/Documents%20and%20Settings/Pc/Documenti/NetBeansProjects/AndroidSWClient/src/org/luca/androidswclient/MainActivity.java'. Verify the setup of project sources.
    Invalid LineBreakpoint MainActivity.java : 24
    User program running
    User program finished


    Tu vedi Problemi???????Ora cmq cerco di verificare se ci sono errori nel web services implementato provando con un client non su Android .

    Ma cmq ho bisogno di AIUTO.

  7. #6
    Shu
    Shu non è in linea
    Androidiano


    Registrato dal
    Aug 2009
    Messaggi
    158

    Ringraziamenti
    6
    Ringraziato 17 volte in 13 Posts
    Predefinito

    Non puoi usare il nome del PC, perché il resolver DNS di Android non ha idea di come si chiami.
    Usa il suo indirizzo IP.

    Ma l'errore mi pare diverso. Sembra che tu abbia impostato un breakpoint per il debugger, ma il debugger non trovi i sorgenti della tua classe. Tutto questo a livello di netbeans. Infatti ti consiglia di controllare la configurazione del progetto, e non dell'emulatore.

    Forse hai "riciclato" un altro progetto per scrivere questo, e hai qualche parametro mal configurato in netbeans, oppure il plugin per netbeans si confonde per qualche motivo. Magari prova a sviluppare su Eclipse, che è supportato ufficialmente. Con netbeans, in gergo, "sono tutti ca$$i tuoi"

    Bye.

  8. #7
    Baby Droid


    Registrato dal
    Apr 2009
    Messaggi
    31

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Ciao Shu,

    ok ora provo e reimportare il progetto in Eclipse Galileo abbandonato per aver generato nel corso dello sviluppo errori strani che poi netbeans non rilevava proprio cmq apparte questo a me preoccupa la chiamata alla classe in Android mica ho tralasciato qualcosa di fondamentale nella programm su Android e poi come faccio a fare debug con l'emulatore è possibile?????

    Hai dato uno sguardo al codice hai da darmi qualche consiglio???

  9. #8
    Androidiano L'avatar di marcodave


    Registrato dal
    Sep 2009
    Messaggi
    78

    Ringraziamenti
    5
    Ringraziato 4 volte in 4 Posts
    Predefinito

    Ciao
    Sottoscrivo il consiglio dell'utente shu, è meglio usare eclipse in quanto supportato ufficialmente.
    Per gli errori, ti posso solo consigliare di testare il web service senza Android.

  10. #9
    Baby Droid


    Registrato dal
    Apr 2009
    Messaggi
    31

    Ringraziamenti
    0
    Ringraziato 1 volta in 1 Post
    Predefinito

    Stò seguendo il consiglio ma sotto Eclipse mi richiede le API di livello 4 ma quando vado a fare aggiornamenti mi rileva il seguente errore:

    Installed: SDK Platform Android 1.6, API 4
    Failed to rename directory C:\eclipse-jee-galileo-win32\eclipse\android-sdk-windows-1.5_r3\android-sdk-windows-1.5_r3\platforms\android-1.5 to C:\eclipse-jee-galileo-win32\eclipse\android-sdk-windows-1.5_r3\android-sdk-windows-1.5_r3\temp\PlatformPackage.old01
    -= Warning ! =-
    A folder failed to be renamed or moved. On Windows this typically means that a program is using that folder (for example Windows Explorer.) Please close all running programs that may be locking the directory 'C:\eclipse-jee-galileo-win32\eclipse\android-sdk-windows-1.5_r3\android-sdk-windows-1.5_r3\platforms\android-1.5' and try again.

    come posso risolverlo????

  11. #10
    Baby Droid


    Registrato dal
    Apr 2009
    Messaggi
    22

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    ciao ankio sto realizzando un client android per web service.
    Ti consiglio di utilizzare Web Tools (WTP) di eclipse per la creazione del web service
    ho seguito questo tutorial:
    Webservices with Axis2 and the Eclipse Web Tool Platform (WTP) - Tutorial

    lato client:
    io utilizzo questi import

    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope ;
    import org.ksoap2.transport.HttpTransportSE;

    per quanto riguarda il namespace ecc ecc io faccio cosi:

    se segui il tutorial che ti ho scritto sopra ottieni un indirizzo simile a questo.
    String URL = "http://192.168.1.34:8080/webservice/services/webserviceAndroid?wsdl";

    "webservice" è il nome del progetto di eclipse che contiene il web service
    String NAMESPACE = "http://webservice";
    String SOAP_ACTION = "http://webservice/login";
    String METHOD_NAME = "login";

    il codice:

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    //request.addProperty("indirizzo", indirizzo);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet=true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    try
    {
    androidHttpTransport.call(SOAP_ACTION, envelope);
    resultsRequestSOAP = envelope.getResponse();
    SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
    risu.setText(resultsRequestSOAP.getProperty(0).toS tring());
    }
    catch(Exception e)
    {
    //risu.setText(e.toString());
    e.toString()
    }

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Discussioni simili

  1. Remote Desktop Client
    Da Fra87 nel forum Acer Serie Liquid Z
    Risposte: 13
    Ultimo messaggio: 24-05-12, 19:10
  2. Client FriendFeed
    Da TheSgrash nel forum Le Applicazioni per Android
    Risposte: 1
    Ultimo messaggio: 02-09-11, 17:39
  3. client di posta HTC
    Da gluca nel forum HTC Tattoo
    Risposte: 2
    Ultimo messaggio: 27-01-10, 20:46
  4. aBTC - Android BitTorrent Client
    Da micio nel forum Le Applicazioni per Android
    Risposte: 2
    Ultimo messaggio: 23-01-10, 18:38
  5. Client Microsoft Exchange
    Da glonciavir nel forum Le Applicazioni per Android
    Risposte: 6
    Ultimo messaggio: 27-09-09, 12:04

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy