Autore Topic: Errore connessione a WebService  (Letto 1103 volte)

Offline dany88ole

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    ------
  • Sistema operativo:
    windows 7 32bit
Errore connessione a WebService
« il: 21 Marzo 2013, 10:23:53 CET »
0
ragazzi in pratica vorrei capire il funzionamento per connettere la mia app ad un web service
ho creato un web service in visualstudio che ha un semplice metodo add che prende in input due parametri interi e restituisce la somma, quindi vorrei prendere questi due valori dalla mia app da delle EditText e tramite un bottone "send" inviare i dati al web service e prendermi la risposta (ovvero la somma) e settarla in una TextView giusto per capire come funziona ma qualcosa non va:
sapreste dirmi cosa sbaglio?
Questa è la classe java dalla quale cerco di connettermi al webservice:

Codice (Java): [Seleziona]
package it.example.webservicecontacttest;

import java.io.Serializable;
import java.util.Hashtable;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity implements Serializable,KvmSerializable{

        /**
         *
         */

        private static final long serialVersionUID = 1L;
        private final String SOAP_NAMESPACE = "[url=http://tempuri.org/";]tempuri - Bing[/url]
        private final String SOAP_URL = "http://10.0.2.2:55298/Service1.asmx";

        private final String SOAP_ACTION = "[url=http://tempuri.org/add";]tempuri - Bing[/url]

        private final String SOAP_METHOD_NAME = "add";
        private SoapObject request;
        private SoapPrimitive response;
        private PropertyInfo pi1;

        private PropertyInfo pi2;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_test);
               
                final EditText etno1= (EditText)findViewById(R.id.editText1);
                final EditText etno2= (EditText)findViewById(R.id.editText2);
                final TextView tx=(TextView)findViewById(R.id.textView1);
                Button bt=(Button)findViewById(R.id.button1);
               
                bt.setOnClickListener(new OnClickListener() {
                        @Override
                       
                       
                        public void onClick(View arg0) {
                request = new SoapObject(SOAP_NAMESPACE, SOAP_METHOD_NAME);
                 pi1 = new PropertyInfo();
                 pi1.setName("a");
                 pi1.setValue(etno1.getText().toString());//get the string that is to be sent to the web service
                 pi1.setType(String.class);
                request.addProperty(pi1);
                 
                 pi2 = new PropertyInfo();
                 pi2.setName("b");
                 pi2.setValue(etno2.getText().toString());//get the string that is to be sent to the web service
                 pi2.setType(String.class);
                 request.addProperty(pi2);
                 
                SoapSerializationEnvelope envp = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                 envp.dotNet = true;
                 envp.setOutputSoapObject(request);
                 HttpTransportSE androidHttpTransport = new HttpTransportSE(SOAP_URL);
                 try {
                 androidHttpTransport.call(SOAP_ACTION, envp);
                response = (SoapPrimitive)envp.getResponse();
               
                 } catch (Exception e) {
                Log.i("WS Error->",e.toString());
                 }
                 tx.setText(response.toString());
        }
                });
        }
       
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.test, menu);
                return true;
        }

        @Override
        public Object getProperty(int arg0) {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public int getPropertyCount() {
                // TODO Auto-generated method stub
                return 0;
        }

        @Override
        public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
                // TODO Auto-generated method stub
               
        }

        @Override
        public void setProperty(int arg0, Object arg1) {
                // TODO Auto-generated method stub
               
        }

}

questo è il relativo layout dell'activity:

Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >

    <LinearLayout
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:layout_alignParentRight="true"
       android:orientation="vertical" >

        <EditText
           android:id="@+id/editText1"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:ems="10" >

            <requestFocus />
        </EditText>

        <EditText
           android:id="@+id/editText2"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:ems="10" />

        <Button
           android:id="@+id/button1"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Button" />

        <TextView
           android:id="@+id/textView1"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="TextView" />
    </LinearLayout>

</RelativeLayout>

e infine questo è il LogCat:

03-21 09:33:47.561: E/AndroidRuntime(1203): FATAL EXCEPTION: main
03-21 09:33:47.561: E/AndroidRuntime(1203): java.lang.NullPointerException
03-21 09:33:47.561: E/AndroidRuntime(1203):    at it.example.testweb.MainActivity$1.onClick(MainActivity.java:80)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at android.view.View.performClick(View.java:4204)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at android.view.View$PerformClick.run(View.java:17355)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at android.os.Handler.handleCallback(Handler.java:725)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at android.os.Handler.dispatchMessage(Handler.java:92)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at android.os.Looper.loop(Looper.java:137)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at android.app.ActivityThread.main(ActivityThread.java:5041)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at java.lang.reflect.Method.invokeNative(Native Method)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at java.lang.reflect.Method.invoke(Method.java:511)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-21 09:33:47.561: E/AndroidRuntime(1203):    at dalvik.system.NativeStart.main(Native Method)
« Ultima modifica: 21 Marzo 2013, 10:34:54 CET da dany88ole »

Offline Garese

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7
Re:Errore connessione a WebService
« Risposta #1 il: 22 Marzo 2013, 08:22:50 CET »
0
Hai provato ad inserire tx.setText nel try, anzichè fuori? Se non va a buon fine, response non è inizializzato...

Inviato dal mio GT-P7500 con Tapatalk 2


Offline dany88ole

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    ------
  • Sistema operativo:
    windows 7 32bit
Re:Errore connessione a WebService
« Risposta #2 il: 22 Marzo 2013, 09:55:10 CET »
0
ciao intanto grazie per la risposta!!!
adesso provo un attimo e ti faccio sapere
cmq il mio problema originale e che devo connettermi a un web service con estensione .svc e non ho trovato gran che in rete
infatti questa era una connessione di prova giusto per capire come funziona ksoap
non è che conosci qualche tutorial o qualche giuda fatta bene su queste cose?
te ne sarei infinitamente grato!!!

Offline Garese

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7
Re:Errore connessione a WebService
« Risposta #3 il: 22 Marzo 2013, 14:05:39 CET »
0
Ora come ora non sapreo proprio, ma se dovesse capitarmi sottomano qualcosa non mancherò ;-)

Inviato dal mio GT-P7500 con Tapatalk 2


Offline dany88ole

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    ------
  • Sistema operativo:
    windows 7 32bit
Re:Errore connessione a WebService
« Risposta #4 il: 22 Marzo 2013, 15:26:16 CET »
0
Grazie mille!!!
Ho appena risolto dopo se ho tempo posto cosi' magare se serve per esempio a qualcuno ;)
adesso quello che vorrei capire è che, il web service è scritto in C_sharp e quindi la maggior parte dei metodi ritornano una ArrayofView e quindi nella response ottengo anyType{} perchè credo che non viene riconosciuto il tipo di dati contenuto all'interno del soap, mentre se chiamo qualche metodo PrimitiveSoap funziona tutto correttamente
quindi adesso vorrei capire come prendermi queste View che sono strutture dati, penso che devo importare SQLite
faccio un po di ricerche e vedo.Se qualcuno gia ha affrontato questa problematica si faccia avanti  8-)

Post unito: 23 Marzo 2013, 13:42:11 CET
Nessuno mi puo' aiutare?
in pratica non trovo niente in rete che mi possa aiutare  :'(
quando faccio il toString della response di una chiamata ad un metodo dentro ci trovo anyType{}
i metodi ritornano array di viste (viste in C_SHARP) che faccio???
PANICO!!!!!
se non risolvo non mi laureo  :'( :'( :'( :'(

Post unito: 23 Marzo 2013, 20:21:51 CET
Ragazzi ci sono quasi!!!
riesco finlamente a vedere la risposta del web service(in pratica sbagliavo perchè passavo un valore al metodo del web service errato)
pero' adesso il mio nuovo problema è questo:
nel soap di risposta ci trovo questo

anyType
{
   EntityKey=anyType
      {
         EntityContainerName=PaeseEntities;
         EntityKeyValues=anyType
            {
                EntityKeyMember=anyType
                   {
                      Key=ID_PAESE; 
                      Value=1;
                   };
                EntityKeyMember=anyType
                   {
                      Key=CODICE;
                      Value=IT;
                   };
                EntityKeyMember=anyType
                   {
                      Key=NOME;
                      Value=Italia;
                   };
                EntityKeyMember=anyType
                   {
                      Key=ID_LINGUA;
                      Value=1; 
                   };
                EntityKeyMember=anyType
                   {
                      Key=PREFISSO_TEL;
                      Value=+39;
                   };
            };
        EntitySetName=VIEW_PAESI;
     };
CODICE=IT;
ID_LINGUA=1;
ID_PAESE=1;
NOME=Italia;
PREFISSO_TEL=+39;
}


come faccio a prendermi sti valori e a metterli in delle variabili???sto vedendo un po su internet e dicono che devo deserializzare
ma a me la getProperty() su questo elemento non mi ritorna niente?
Avete qualche soluzione in mente??? ??? ??? ???
« Ultima modifica: 23 Marzo 2013, 21:20:10 CET da dany88ole »

Offline dany88ole

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    ------
  • Sistema operativo:
    windows 7 32bit
Re:Errore connessione a WebService
« Risposta #5 il: 26 Marzo 2013, 13:07:04 CET »
0
Nessuno puo' aiutarmi???  :-X :-X :-X :-X