3

我需要在 ksoap2(Android 版本)生成的信封中添加一个属性(xmlns:n0="urn:checkOTP")。

<v:Envelope
  xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:d="http://www.w3.org/2001/XMLSchema"
  xmlns:c="http://www.w3.org/2003/05/soap-encoding"
  xmlns:v="http://www.w3.org/2003/05/soap-envelope">
  <v:Header>
  ...
</v:Envelope>

转向

<v:Envelope
  xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:d="http://www.w3.org/2001/XMLSchema"
  xmlns:c="http://www.w3.org/2003/05/soap-encoding"
  xmlns:v="http://www.w3.org/2003/05/soap-envelope"
  xmlns:n0="urn:checkOTP">
  <v:Header>
   ...
  </v:Envelope>

错误代码是:

W/System.err(858): Code: SOAP-ENV:Sender, Reason: Method 'checkOtp' not implemented: method name or namespace not recognized

该服务器是 gSOAP2 的,如果在标头中添加“xmlns:n0="urn:checkOTP"(使用 javascript 测试),则可以完美运行。

此致。

4

1 回答 1

0

以下应该有效:

SoapObject request = new SoapObject("urn:checkOTP", "checkOTP")

这似乎不是将命名空间添加到信封,而是作为 body 元素内的方法元素的属性,但是也可以。

于 2014-04-23T14:07:56.110 回答