Question

J'ai vu des sujets qui parlent de ce mais personne n'a semblé poster une solution. En ce moment, je teste passer des paramètres à mon service Web .Net. Lorsque les paramètres atteignent le service web, il l'ajoute avec une chaîne supplémentaire retourne alors trop ma demande; mais tout ce que je suis de retour est le message de chaîne, pas le paramètre je suis passé. Y at-il quelque chose de mal avec mon service web ou ma méthode de savon?

Savon:

  

SoapObject demande = new SoapObject (NAMESPACE, METHOD_NAME);

    request.addProperty("A", "workowr");


    SoapSerializationEnvelope envelope =
        new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);    
        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
            //SoapObject result = (SoapObject)envelope.getResponse();       
            String resultData = result.toString();
            testTV.setText(resultData);

        }
        catch(Exception e)
        {
            testTV.setText(e.getMessage());
        }

Voici mon service Web simple .Net:

  

Fonction publique getRegInfo (ByVal A As String) As String

     

Retour A + "String message"

     

End Function

J'apprécierait toute aide.

Était-ce utile?

La solution

Ce qui a fonctionné pour moi était en train de changer l'URL de l'espace de noms à la fois mon .Net webservice et dans mon application.

Par exemple, j'avais:

" http://www.example.com/webservices/ "

i changé:

"example.com/webservices /"

et cela a fonctionné parfaitement.

Lui donner un coup de feu.

Autres conseils

Oui - il semble y avoir un problème d'avoir deux points (:) dans l'espace de noms webservice, lors de la connexion via KSoap. non-Parameter fin de travail régulier, mais les paramètres semblent passer par comme nulle pour une raison quelconque.

Il est en fait pas besoin d'avoir le « / » supplémentaire à la fin.

Après le débogage et d'essayer de tout ce qui est écrit sur le net, je trouve que la chose la plus importante lors du passage des paramètres est d'avoir la même déclaration dans votre WebService-déclaration et ksoap2.

Il faut donc utiliser « / » sur les deux endroits ou retirer des deux endroits. le "http: //". est également Okey utiliser

Le code parfait qui ajoute les paramètres  ce travaux tentent cette

       SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.setOutputSoapObject(request);
    envelope.dotNet = true;
    PropertyInfo pi = new PropertyInfo();
    pi.setName("ProcName");
    pi.setValue(a);
    pi.setType(int.class);
    request.addProperty(pi);
    pi=new PropertyInfo();
    pi.setName("UserName");
    pi.setValue(b);
    pi.setType(String.class);
    request.addProperty(pi);

    pi=new PropertyInfo();
    pi.setName("Password");
    pi.setValue(c);
    pi.setType(String.class);
    request.addProperty(pi);

    pi=new PropertyInfo();
    pi.setName("Paras");
    pi.setValue(d);
    pi.setType(String.class);
    request.addProperty(pi);


    Object response = null;

    HttpTransportSE androidHttpTransport = new HttpTransportSE(SOAP_ADDRESS);

    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        response = envelope.getResponse();
    } catch (final Exception e) {
        String error = "no";
    }
    return response.toString();
}

Vous devez copier et passé l'espace et de l'action Nom du savon exactement la même qu'ils apparaissent dans le fichier xml WSDL.

J'ai eu le même problème et quand je l'ai enlevé http: // de (Nom Espace et action savon) le problème a été résolu (dans le WSDL, ils sont sans http: //). En fait, j'ai essayé d'accéder au service Web local (le service installé dans le serveur local)

Cependant, j'ai une autre application ayant accès à un service Web .NET externe (Service web de la banque centrale pour obtenir l'échange de taux) Le WSDL namespace et SoapAction Contient http: // Mon application a parfaitement fonctionné sans enlever http: //

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top