Übergeben von Arrays mithilfe von Web-services in Ksoap2

Habe ich für den Aufruf eines web service in der web service wird aufgerufen durch kSoap2-Methode, jetzt in diesem ein Knoten ist ein Array, so wie ich, kann es passieren.

POST /opera/OperaWS.asmx HTTP/1.1
Host: 182.71.19.26
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/SendGroupMessageNotification"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <SendGroupMessageNotification xmlns="http://tempuri.org/">
      <reciverMemberId>
        <Group>
          <groupid>string</groupid>
          <groupMembers>
            <Id>string</Id>
            <Id>string</Id>
          </groupMembers>
        </Group>
        <Group>
          <groupid>string</groupid>
          <groupMembers>
            <Id>string</Id>
            <Id>string</Id>
          </groupMembers>
        </Group>
      </reciverMemberId>
      <MemberId>int</MemberId>
      <MESSAGE>string</MESSAGE>
      <CREATEDDATE>string</CREATEDDATE>
      <isUrgent>boolean</isUrgent>
      <Predifnemessage>string</Predifnemessage>
    </SendGroupMessageNotification>
  </soap:Body>
</soap:Envelope>

So, in der oben genannten web-service, wie ich kann ich einstellen, dass die Werte für die reciverMemberId

restlichen Parameter gesetzt ist, einfach mit dem propertyInfo.

Dazu habe ich aus etwas code, wie unten

static class Group implements KvmSerializable
    {
        String groupid;
        Vector groupMembers;
        public Group(String groupId,Vector groupmembers)
        {
            this.groupid=groupId;
            this.groupMembers=groupmembers;
        }

        public Object getProperty(int i)
        {
            switch(i)
            {
                case 0:
                    return groupid;
                case 1:
                    return groupMembers;
            }
            return null;
        }

        public int getPropertyCount()
        {
            return 2;
        }

        public void setProperty(int i, Object o)
        {
            switch(i)
            {
                case 0:
                    groupid=o.toString(); break;
                case 1:
                    groupMembers=(Vector) o;
                    break;
            }
        }

        public void getPropertyInfo(int i, Hashtable hshtbl, PropertyInfo pi)
        {
            switch(i)
            {
                case 0:
                    pi.type=PropertyInfo.STRING_CLASS;
                    pi.name="groupid";
                    break;
                case 1:
                    pi.type=PropertyInfo.VECTOR_CLASS;
                    pi.name="groupMembers";
                    break;
            }
        }
    }
    static class RereciverMemberId implements KvmSerializable
    {

        Group grp;
        public RereciverMemberId()
        {
            Vector grpMembers=new Vector();
            grpMembers.add("29");
            grpMembers.add("36");
            grp=new Group("1", grpMembers);
        }
        public Object getProperty(int i)
        {
            return grp;
        }

        public int getPropertyCount()
        {
            return 0;
        }

        public void setProperty(int i, Object o)
        {
            this.grp=(Group) o;
        }

        public void getPropertyInfo(int i, Hashtable hshtbl, PropertyInfo pi)
        {
            pi.type=grp.getClass();
            pi.name="Group";
        }

    }
    public static void sendGroupMessageNotification()
    {
        SOAP_ACTION="http://tempuri.org/SendGroupMessageNotification";
        METHOD_NAME="SendGroupMessageNotification";
        SoapObject myObject = new SoapObject(NAMESPACE,METHOD_NAME);

        //String str="<Group><groupid>1</groupid><groupMembers><Id>29</Id><Id>36</Id></groupMembers></Group>";
        RereciverMemberId rec=new RereciverMemberId();
        PropertyInfo pi = new PropertyInfo();
        pi.setName("reciverMemberId");
        pi.setValue(rec);
        pi.setType(rec.getClass());
        myObject.addProperty(pi);
        PropertyInfo p = new PropertyInfo();
        p.setName("MemberId");
        p.setValue(1);
        p.setType(PropertyInfo.INTEGER_CLASS);
        myObject.addProperty(p);
        p = new PropertyInfo();
        p.setName("MESSAGE");
        p.setValue("Test Message From JAVA");
        p.setType(PropertyInfo.STRING_CLASS);
        myObject.addProperty(p);

        p = new PropertyInfo();
        p.setName("CREATEDDATE");
        p.setValue("15 Dec 2011");
        p.setType(PropertyInfo.STRING_CLASS);
        myObject.addProperty(p);

        p = new PropertyInfo();
        p.setName("isUrent");
        p.setValue(false);
        p.setType(PropertyInfo.BOOLEAN_CLASS);
        myObject.addProperty(p);

        p = new PropertyInfo();
        p.setName("Predifnemessage");
        p.setValue("Hello");
        p.setType(PropertyInfo.STRING_CLASS);
        myObject.addProperty(p);

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(myObject);
        HttpTransportSE transport = new HttpTransportSE(URL);
        try
        {
            transport.call(SOAP_ACTION, envelope);
        }
        catch (IOException ex)
        {
            Logger.getLogger(SoapWebServices.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch (XmlPullParserException ex)
        {
            Logger.getLogger(SoapWebServices.class.getName()).log(Level.SEVERE, null, ex);
        }
        try
        {
                SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
                System.out.println(result.toString());
        }
        catch (SoapFault ex)
        {
            Logger.getLogger(SoapWebServices.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
  • Haben Sie sich überlegt mit Jax? Sie würde nur eine Klasse mit einer Liste (=array) und beschriften Sie Sie entsprechend.
  • ist jemand um mir zu helfen, auf diese
  • oracle.com/technetwork/articles/javase/index-140168.html Warten Sie, ich Schreibe eine Antwort ...
  • ok thank u für die Antwort schreiben
  • Awh, gerade gesehen, dass ich es Durcheinander. Für kSoap JaxB funktioniert möglicherweise nicht ...
  • Ich habe das gleiche problem, und ich habe die Suche nach einer Antwort für eine lange Zeit, aber nichts. Die meisten, die ich bekommen konnte, ist der pass ein Komplexes Objekt in in ein weiteres Komplexes Objekt, und übergeben Sie ein array von komplexen Objekten (aber nicht ein array-innen, die in einem komplexen Objekt).
  • hey, danke Euch allen, jetzt bin ich aber implementieren Sie die richtige Art und Weise, wie wir passieren das komplexe Objekt in der Seife
  • Ich die Antwort auf jeden, der Sie braucht, nochmals danke an alle

Schreibe einen Kommentar