Autore Topic: Inviare Array di interi a un web service  (Letto 488 volte)

Offline dany88ole

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    ------
  • Sistema operativo:
    windows 7 32bit
Inviare Array di interi a un web service
« il: 16 Aprile 2013, 17:07:19 CEST »
0
Ciao ragazzi purtroppo ho cercato molto in rete ma non riesco a trovare nulla riguardante l'invio a un metodo di un web service di un vettore di interi( ho trovato solo vettore di stringhe ma sembra non andare anche modificando)
Vi posto il metodo del WebService:

Codice (XML): [Seleziona]
<xs:element name="CalcolaImporto">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="idPaesePrelievo" type="xs:int"/>
<xs:element minOccurs="0" name="idPaeseDest" type="xs:int"/>
<xs:element minOccurs="0" name="idPartner" type="xs:int"/>
<xs:element xmlns:q14="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="idProdotti" nillable="true" type="q14:ArrayOfint"/>
<xs:element xmlns:q15="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="qtaProdotti" nillable="true" type="q15:ArrayOfint"/>
<xs:element minOccurs="0" name="codicePromo" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="tipoPratica" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CalcolaImportoResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="CalcolaImportoResult" type="xs:double"/>
<xs:element minOccurs="0" name="ricavo" type="xs:double"/>
<xs:element xmlns:q16="http://schemas.datacontract.org/2004/07/BagExpressDataLibrary" minOccurs="0" name="dettagli" nillable="true" type="q16:ArrayOfDettaglioProdotto"/>
</xs:sequence>
</xs:complexType>
</xs:element>


Questo invece è uno schema: (in realtà anche quello di prima):

Codice (XML): [Seleziona]
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<xs:complexType name="ArrayOfint">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="int" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:element name="ArrayOfint" nillable="true" type="tns:ArrayOfint"/>


e per finire vi posto il codice java riguardante la chiamata

Codice (Java): [Seleziona]
public void chiamata(){
Vettore primo = new Vettore();
Vettore secondo = new Vettore();
primo.add(1);
secondo.add(2);      

 SoapObject request = new SoapObject("[url=http://tempuri.org/"]tempuri - Bing[/url], "CalcolaImporto");
       
        PropertyInfo documentIdsPropertyInfo = new PropertyInfo();
        documentIdsPropertyInfo.setName("idProdotto");
        documentIdsPropertyInfo.setValue(primo);
        documentIdsPropertyInfo.setType(primo.getClass());
 
 request.addProperty("idPaesePrelievo", 2);
                request.addProperty("idPaeseDest", 3);
                request.addProperty("idPartner", 1);
                request.addProperty("codicePromo", "");
                request.addProperty("tipoPratica", 2);
                request.addProperty("idProdotto",documentIdsPropertyInfo);
 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                  envelope.bodyOut = request;
          envelope.dotNet = true;
          envelope.setOutputSoapObject(request);
          envelope.setAddAdornments(false);
          envelope.implicitTypes= true;
          envelope.addMapping("[url=http://tempuri.org/"]tempuri - Bing[/url], "Vettore",new Vettore().getClass());
         
       
          HttpTransportSE androidHttpTransport = new HttpTransportSE("INDIRIZZO.svc");
                 androidHttpTransport.debug = true;
                 try{
                    androidHttpTransport.call("[url=http://tempuri.org/SERVIZIO/CalcolaImporto"]tempuri - Bing[/url], envelope);
                    SoapObject resultsRequestSOAP = (SoapObject) envelope.getResponse();
                    tv.setText(resultsRequestSOAP.toString());
                 }catch(Exception e){
                         e.printStackTrace();
                 }
        }

Questa invece è la classe Vettore;

Codice (Java): [Seleziona]
package com.example.mannahggia;

import java.util.Hashtable;
import java.util.Vector;

import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;

public class Vettore extends Vector<Integer> implements KvmSerializable{


     /**
         *
         */

        private static final long serialVersionUID = 1L;

        @Override
     public Object getProperty(int arg0) {
             return this.get(arg0);
     }

     @Override
     public int getPropertyCount() {
             return this.size();
     }

     @Override
     public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
             arg2.name = "int";
             arg2.type = PropertyInfo.INTEGER_CLASS;
             arg2.namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays";
     }

     @Override
     public void setProperty(int arg0, Object arg1) {
             this.add((Integer)arg1);
     }

}

Il LOGCAT è Cannot Serialize: idProdotto[1];

Aiutatemi per piacere sono disperato!! :-X
« Ultima modifica: 16 Aprile 2013, 17:09:01 CEST da dany88ole »