2010-06-15 66 views
3

我已经看到了讨论这个主题,但似乎没有人发布解决方案。目前,我正在测试传递参数给我的.Net Web服务。当参数到达Web服务时,它会添加一个附加字符串,然后将其返回给我的应用程序;但我要返回的是字符串消息,而不是我传递的参数。我的web服务或soap方法有问题吗?Web服务从应用程序使用kso​​ap方法接收空参数

皂:

SoapObject请求=新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()); 
     } 

这里是我的简单的.NET Web服务:

公共功能getRegInfo(一BYVAL作为字符串)作为字符串

回归A + “​​字符串消息”

End Function

我将不胜感激任何帮助。

+0

你曾经能够解决这个问题吗?我有与Android和ksoap2 – bugzy 2010-06-22 12:17:11

回答

5

我的工作是改变我的.net web服务和我的应用程序中的命名空间URL。

例如,我有:

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

我改为:

“example.com/webservices/”

它完美地工作。

给它一个镜头。

1

是的 - 在通过KSoap进行连接时,似乎在web服务名称空间中冒号(:)时出现了一些问题。定期的非参数调用可以正常工作,但由于某些原因,参数似乎经历为空。

1

实际上没有必要在最后加上额外的“/”。

在调试并尝试了网上写的任何东西之后,我发现传递参数时最重要的是在WebService声明和ksoap2中使用相同的语句。

因此,在两个地方使用“/”或从两个地方删除它。 “http://”也是可以使用的。

+0

相同的问题,你已经保存我的屁股,谢谢你的提示! – schwiz 2011-08-16 08:40:48

0

您必须复制并过去名称空间和soap操作,它们与WSDL xml文件中出现的完全相同。 (在WSDL中它们没有http://) 其实我试图访问本地web服务(服务安装在本地服务器上)

但是我有另一个访问外部的应用程序。NET网络服务 (央行网路服务取得的汇率) 的WSDL命名空间和SOAPACTION包含HTTP:// 我的应用程序完美地工作而不删除HTTP://

1

,增加了参数完美的代码 这个作品试试这个

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