【问题标题】:customization of ksoap2-android envelopeksoap2-android信封的定制
【发布时间】:2012-06-24 17:27:23
【问题描述】:

我有一个使用来自 ksoap2-android lib 的 SoapSerializationEnvelope 创建的信封的问题。我需要得到(服务器期望的)是:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soa="http://agh.edu.pl/soa">
   <soapenv:Header/>
   <soapenv:Body>
      <soa:getCompanyById>
         <id>1</id>
      </soa:getCompanyById>
   </soapenv:Body>
</soapenv:Envelope>

我实际上得到的是:

<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
    <n0:getCompanyById id="o0" c:root="1" xmlns:n0="http://agh.edu.pl/soa">
        <id i:type="d:int">5</id>
    </n0:getCompanyById>
</v:Body>
</v:Envelope>

我的 Java 代码:

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        PropertyInfo id = new PropertyInfo();
        id.setName("id");
        id.setValue(5);
        id.setType(int.class);
        request.addProperty(id);

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.setOutputSoapObject(request);      

        HttpTransportSE httpTransport = new HttpTransportSE(URL);
        httpTransport.debug = true;

        try {
            httpTransport.call(request.getNamespace() + "/" + request.getName(), envelope);
        } catch (Exception e)
        {
            System.out.println(httpTransport.requestDump);
            System.out.println(httpTransport.responseDump);
            System.out.println(e.getMessage());
        }

我需要做的是将每个 v:something 更改为 soapenv:something 并将 n0:getCompanyById 更改为 soa:getCompanyById。任何的想法?提前致谢。赛亚

【问题讨论】:

    标签: java android soap android-ksoap2 envelope


    【解决方案1】:

    这些信封大多相同 - 它们只是使用不同的前缀。我建议使用 SoapUI 之类的东西:逐步将工作信封更改为您从代码中获得的内容。一旦事情变糟,你就会知道是什么导致了问题。

    根据我的经验 i:type="d:int" 也可能导致问题。

    【讨论】:

    • 如你所说,问题是 i:type="d:int"。解决方案是将 value 转换为 long:“id.setValue((long)value)”。肥皂太迟钝了。我希望创造它的人会在地狱中燃烧。谢谢,你是我的上帝
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多