2017-03-31 4 views
0

Je construis une application qui consomme un service Web .asmxksoap setProperity ne fonctionne pas dans Android

Je suis confronté à un problème étrange, tous les paramètres que j'ai envoyé à la demande est nulle dans le serveur

Cette est ma méthode

try { 

        SoapObject request = new SoapObject(DealightsConstants.NAMESPACE, DealightsConstants.METHOD_MOBILE_LOGIN); 
        //request.addProperty(DealightsConstants.METHOD_MOBILE_LOGIN_USERNAME, username); 
        //request.addProperty(DealightsConstants.METHOD_MOBILE_LOGIN_PASSWORD, password); 
        PropertyInfo pi = new PropertyInfo(); 
        pi.setName(DealightsConstants.METHOD_MOBILE_LOGIN_USERNAME); 
        pi.setValue(username); 
        pi.setType(String.class); 

        PropertyInfo pi1 = new PropertyInfo(); 
        pi1.setName(DealightsConstants.METHOD_MOBILE_LOGIN_PASSWORD); 
        pi1.setValue(password); 
        pi1.setType(String.class); 

        request.addProperty(pi); 
        request.addProperty(pi1); 

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
        envelope.dotNet=true; 
        envelope.setOutputSoapObject(request); 

        HttpTransportSE androidHttpTransport = new HttpTransportSE(DealightsConstants.URL); 
        androidHttpTransport.call(DealightsConstants.SOAP_ACTION + DealightsConstants.METHOD_MOBILE_LOGIN, envelope); 
        androidHttpTransport.debug=true; 

        Object result = envelope.getResponse(); 
        if (result != null) { 

         Log.i("AMIRA" , result.toString()); 
         JSONArray array = new JSONArray(result.toString()); 
         if (array != null && array.length() > 0) { 
          return array.getJSONObject(0); 
         } else { 
          return null; 
         } 
        } else { 
         return null; 
        } 
       } catch (Exception e) { 
        e.printStackTrace(); 
        return null; 
       } 

J'utiliser beaucoup de formats et de travail rien avec moi

EDIT

partie de la description de la méthode asmx

POST /DealightsWS.asmx HTTP/1.1 
Host: ------ 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 
SOAPAction: "Dealights/mobileLogin" 

<?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> 
    <mobileLogin xmlns="Dealights"> 
     <uname>string</uname> 
     <pass>string</pass> 
    </mobileLogin> 
    </soap:Body> 
</soap:Envelope> 

Répondre

0

comparer à mes propres projets de savon, peut-être cela va corriger:

androidHttpTransport.call(DealightsConstants.SOAP_ACTION, envelope); 

avis que j'ai enlevé:

+ DealightsConstants.METHOD_MOBILE_LOGIN 

qui est déjà fourni dans la demande jointe à l'enveloppe

+0

la même structure de méthode fonctionne si je n'envoie pas de paramètres ou si j'envoie un paramètre int, le problème se produit uniquement avec les paramètres de chaîne –

+0

pouvez-vous fournir une partie de wsdl – buradd

+0

J'ai édité ma question, s'il vous plaît l'examiner –