1

我在使用 ksoap2 从 android 调用 .net Web 服务时遇到问题。调用在没有参数的情况下执行得很好,但是当我传递任何类型的参数时,Web 服务只会收到一个空值。我尽了一切可能,但到目前为止没有运气。我希望有人可以提供帮助,客户端代码是:

 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);
     .....
             }

     .....
4

3 回答 3

1

以这种方式对我来说很好......

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);

我的 Soap 服务器是 WCF 服务。Client 是一个使用 Ksoap 的 android 模拟器。

于 2010-06-19T16:05:32.617 回答
1

我有这个问题,我可以解决它。为了解决它,您应该考虑以下设置:

我的网址是:“http://”+“MyIP:80/PathTraceWS/SetPathToServer.asmx”(由于stackoverflow验证,我显示了上面的网址)

Web 服务操作是: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";

我相信如果您正确设置上述参数,您的问题将得到解决。我的问题是:

1-将 WSDL_TARGET_NAMESPACE 设置为 "http://"+"tempuri.org" 而不是 "http://"+"tempuri.org/"

2-如果您通过 android 移动模拟器调用 Web 服务,则不应使用 localhost,而应使用系统 IP

于 2016-07-15T10:17:38.720 回答
0

如果您可以控制 web 服务,请尝试http://从 web 服务中的命名空间名称中删除(并更新您的 java 代码中的所有引用)。如果您使用的不是您自己的 Web 服务(为此,您可以尝试此解决方法),这不是解决方案,但除此之外它似乎工作正常。

于 2010-07-08T14:14:18.843 回答