DotNet Service和Android(Ksoap2)存在一個奇怪的問題。 我使用這個代碼:在Android中使用ksoap2將參數傳遞給webservice的問題
// Création de la requête SOAP
SoapObject request = new SoapObject ("http://webservicesobject.url.fr/", "GetPatientWithIPPEmed");
//Ajout de propriété: addProperty(nom de variable, valeur) -> Le nom de la variable vient du fichier WSDL
request.addProperty("IPPEmed", Integer.parseInt("10640137"));
request.addProperty("masque_de_donnee", Integer.parseInt("0"));
//Toutes les données demandées sont mises dans une enveloppe.
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
//Préparation de la requête
envelope.dotNet = true;
envelope.encodingStyle = SoapSerializationEnvelope.ENC;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE("http://urlwebsite/service.asmx");
//Ceci est optionnel, on l'utilise pour savoir si nous voulons ou non utiliser
//un paquet "sniffer" pour vérifier le message original (androidHttpTransport.requestDump)
androidHttpTransport.debug = true;
//Envoi de la requête
androidHttpTransport.call("http://webservicesobject.url.fr/GetPatientWithIPPEmed", envelope);
//Obtention du résultat
Object test = (Object)envelope.getResponse();
SoapObject soapResult = (SoapObject)envelope.bodyIn;
int nb = soapResult.getPropertyCount();
return soapResult;
它運行像網絡的方法簡單的像一個魅力: - 字符串GetVersion() - 列表GetAllRooms()
但對於像參數的方法: - CRoom GetPatientWithIPPEmed(int IPPEmed,int masque_de_donnee)
對象測試的結果爲null!當然,如果我用IE調用這個方法,我有一個對象;)。
但是,我有這個SOAP消息:
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"><v:Header /><v:Body><n0:GetPatientWithIPPEmed id="o0" c:root="1" xmlns:n0="http://webservicesobject.url.fr/"><IPPEmed i:type="d:int">10640137</IPPEmed>
<masque_de_donnee i:type="d:int">0</masque_de_donnee>
</n0:GetPatientWithIPPEmed></v:Body></v:Envelope>
還是正確的SOAP消息必須是:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetPatientWithIPPEmed xmlns="http://webservicesobject.url.fr/">
<IPPEmed>10640137</IPPEmed>
<masque_de_donnee>0</masque_de_donnee>
</GetPatientWithIPPEmed>
</soap:Body>
</soap:Envelope>
的問題一定是在這裏,我想:
<IPPEmed i:type="d:int">10640137</IPPEmed>
<masque_de_donnee i:type="d:int">0</masque_de_donnee>
但我怎樣才能生成正確的肥皂信息?