3

我见过讨论这个的话题,但似乎没有人发布解决方案。目前,我正在测试将参数传递给我的 .Net Web 服务。当参数到达 Web 服务时,它会添加一个附加字符串,然后我的应用程序也将其返回;但我返回的只是字符串消息,而不是我传递的参数。我的网络服务或我的肥皂方法有问题吗?

肥皂:

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

这是我简单的 .Net 网络服务:

公共函数 getRegInfo(ByVal A As String) As String

返回 A + "字符串消息"

结束功能

我将不胜感激任何帮助。

4

5 回答 5

5

对我有用的是在我的 .Net webservice 和我的应用程序中更改命名空间 URL。

例如,我有:

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

我改为:

“example.com/webservices/”

它工作得很好。

试一试。

于 2010-06-22T18:31:08.687 回答
1

实际上没有必要在末尾添加额外的“/”。

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

所以在两个地方都使用“/”或从两个地方删除它。“http://”也可以使用。

于 2011-07-12T07:01:23.640 回答
1

Yes - there seems to be some problem with having a colon (:) in the webservice namespace, when connecting via KSoap. Regular non-parameter calls work fine, but parameters seem to go through as null for some reason.

于 2010-07-13T13:16:29.537 回答
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();
}
于 2016-08-06T06:45:55.437 回答
0

您必须复制和过去的名称空间和肥皂操作,它们与它们在 WSDL xml 文件中出现的完全相同。

我遇到了同样的问题,当我从(命名空间和肥皂操作)中删除 http:// 时,问题就解决了。(在 WSDL 中它们没有 http://)实际上我试图访问本地 Web 服务(安装的服务在本地服务器中)

但是,我有另一个应用程序可以访问外部 .NET Web 服务(中央银行 Web 服务以获取汇率交换) WSDL 名称空间和 SoapAction 包含 http:// 我的应用程序运行良好,无需删除 http://

于 2014-12-24T15:44:48.330 回答