Soap web服务和使用ksoap协议的android客户端不匹配

本文关键字:协议 android 客户端 不匹配 ksoap web 服务 Soap | 更新日期: 2023-09-27 18:30:13

我有一个android客户端,它使用ksoap与用c#asp.net编写的wsdl web服务通信。我在匹配web服务和客户端之间的参数类型方面遇到了问题。web服务器期望这种请求(自动生成):

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetDetails xmlns="http://host.org/">
      <event_id>int</event_id>
    </GetDetails>
  </soap:Body>
</soap:Envelope>

客户端使用ksoap发送请求,它们看起来像这样:

<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:GetDetails id="o0" c:root="1" xmlns:n0="http://tempuri.org">
              <event_id i:type="d:int">1</event_id>
           </n0:GetDetails>
       </v:Body>
</v:Envelope>

出于某种原因,当手动组装请求以使其看起来像第一个选项时,WS将以下"客户端"的请求解析为0(我想是因为有额外的类型属性-I:type="d:int"),它可以正常工作。如何使web服务正确读取ksoap格式,或者如何将其预期格式更改为类似ksoap请求的格式。(web服务soap协议是自动生成的)。

Soap web服务和使用ksoap协议的android客户端不匹配

解决方案有两部分:1.关于删除属性类型,我在这里找到了答案:使用addMapping而不使用";i: type=";用于android的ksoap2中的属性我需要设置:

envelope.implicitTypes = true;
  1. 名字空间必须以退格结束,我错过了