2009-12-09 4 views
1

Je rencontre un problème lors de l'appel des services web .net à partir de android en utilisant ksoap2. L'appel est exécuté très bien sans paramètres, mais lorsque je transmets des paramètres de n'importe quel type, le service Web reçoit juste une valeur nulle . J'ai essayé tout ce qui était possible mais pas de chance jusqu'à présent. J'espère quelqu'un peut aider, Le code côté client est:passer des paramètres en utilisant ksoap2 au service web .net, passe toujours des valeurs nulles (vides)

public static boolean temp(){ 
      try { 

      SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME_TEMP); 
      PopertyInfo p = new PropertyInfo(); 
      p.type = PropertyInfo.INTEGER_CLASS; 
      p.setName("num"); 
      p.setValue(5); 
      p.setNamespace(NAMESPACE); 
      request.addProperty(p) ; 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.dotNet = true; 
      envelope.encodingStyle = SoapSerializationEnvelope.ENC; 
      envelope.setOutputSoapObject(request); 
      AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL); 
      androidHttpTransport.call(SOAP_ACTION_TEMP, envelope); 
    ..... 
      } 

    ..... 

Répondre

1

Juste fonctionnent très bien pour moi de cette façon ...

SoapObject requete = new SoapObject(NAMESPACE, METHOD_NAME); 

PropertyInfo propertyInfo = new PropertyInfo(); 
propertyInfo.type = PropertyInfo.INTEGER_CLASS; 
propertyInfo.name = "value"; 
requete.addProperty(propertyInfo, 2); 

SoapSerializationEnvelope enveloppe = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
enveloppe.dotNet = true; 
enveloppe.setOutputSoapObject(requete); 

Mon serveur de savon est un service WCF. Le client est un émulateur Android utilisant Ksoap ..

0

Si vous avez le contrôle sur le service Web, essayez de supprimer http:// de votre nom d'espace de nom dans le service Web (et de mettre à jour toutes vos références dans votre code java). Ce n'est pas une solution si ce n'est pas votre propre webservice que vous consommez (pour cela, vous pouvez essayer this workaround) mais sinon cela semble fonctionner correctement.

1

J'ai eu ce problème et je pourrais le résoudre. Pour le résoudre, vous devriez considérer le paramètre suivant:

mon URL était: "http: //" + "MyIP: 80/PathTraceWS/SetPathToServer.asmx" (je l'ai montré l'url comme ci-dessus en raison de la validation stackoverflow)

action de service Web est: SetData

String SOAP_ACTION= "http://"+"tempuri.org/SetData"; 
    String OPERATION_NAME="SetData"; 
    String WSDL_TARGET_NAMESPACE="http://"+tempuri.org/"; 
    String SOAP_ADDRESS="http://"+"192.168.1.54:80/PathTraceWS/SetPathToServer.asmx"; 

Je crois que si vous définissez les paramètres ci-dessus correctement votre problème résoudra. Mes problèmes étaient les suivants:

1 pour définir WSDL_TARGET_NAMESPACE à "http: //" + "tempuri.org" pas "http: //" + "tempuri.org/"

2- Si vous êtes appeler le service web par l'émulateur mobile android vous ne devriez pas utiliser localhost et à la place vous devriez utiliser votre système IP

Questions connexes