J'ai lutté pendant des heures en essayant de construire la bonne demande SOAP en utilisant ksoap2 pour Android avec pas de chance. La demande idéale ressemble à ceci:Essayer de construire une demande SOAP correcte
<?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:Header>
<AuthorizationToken xmlns="http://www.avectra.com/2005/">
<Token>string</Token>
</AuthorizationToken>
</soap:Header>
<soap:Body>
<ExecuteMethod xmlns="http://www.avectra.com/2005/">
<serviceName>string</serviceName>
<methodName>string</methodName>
<parameters>
<Parameter>
<Name>string</Name>
<Value>string</Value>
</Parameter>
</parameters>
</ExecuteMethod>
</soap:Body>
</soap:Envelope>
J'utilise le code suivant pour générer ma demande:
SoapObject request = new SoapObject(NAMESPACE, METHOD);
request.addProperty("serviceName", SERVICENAME);
request.addProperty("methodName", METHODNAME);
SoapObject nestedParameters = new SoapObject(NAMESPACE, "parameters");
SoapObject param = new SoapObject(NAMESPACE, "Parameter");
param.addProperty("Name", name);
param.addProperty("Value", value);
nestedParameters.addSoapObject(param);
request.addSoapObject(nestedParameters);
SoapSerializationEnvelope envelope =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;
envelope.implicitTypes = true;
envelope.headerOut = new Element[1];
Element header = new Element().createElement(NAMESPACE, "AuthorizationToken");
Element token = new Element().createElement(NAMESPACE, "Token");
token.addChild(Node.TEXT, this.AUTH_TOKEN);
header.addChild(Node.ELEMENT, token);
envelope.headerOut[0] = header;
Qu'est-ce que ksoap2 est la construction est:
<v:Envelope xmlns:i="http://www.w3.org/1999/XMLSchema-instance" xmlns:d="http://www.w3.org/1999/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header>
<n0:AuthorizationToken xmlns:n0="http://www.avectra.com/2005/">
<n0:Token>string</n0:Token>
</n0:AuthorizationToken>
</v:Header>
<v:Body>
<ExecuteMethod xmlns="http://www.avectra.com/2005/" id="o0" c:root="1">
<serviceName>AHAWebServices</serviceName>
<methodName>MemberDirectory</methodName>
<parameters i:type="n1:parameters" xmlns:n1="http://www.avectra.com/2005/">
<Parameter i:type="n1:Parameter">
<Name>string</Name>
<Value>string</Value>
</Parameter>
</parameters>
</ExecuteMethod>
</v:Body>
</v:Envelope>
J'ai le sentiment que le problème est dans l'en-tête avec les préfixes n0 mais je n'ai aucune idée de la façon de se débarrasser d'eux. Je les ai retirés du corps en définissant implicitTypes sur true mais je ne trouve pas de paramètre similaire pour l'en-tête. Je suis nouveau à SOAP donc tout autre conseil est grandement apprécié. Est-ce que quelqu'un a une idée de comment je pourrais résoudre ce problème?
Pouvez-vous s'il vous plaît me parler de SoapObject Et les valeurs passent dessus .... –