1

我创建了一个简单的头类:

Class Sample.Headers Extends %SOAP.Header
{
    Parameter NAMESPACE = "http://tempuri.org";
    Property UserName As %String;
}

在 Web 服务中,我确保在SOAPHEADERS参数中设置了正确的命名空间:

Parameter SOAPHEADERS = "UserName:Sample.Headers";

我使用 SoapUI 发送以下 XML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org">
   <soapenv:Header>
       <tem:UserName>This is the header</tem:UserName>
   </soapenv:Header>
   <soapenv:Body>
      <tem:Test>
         <!--Optional:-->
         <tem:argAge>10</tem:argAge>
      </tem:Test>
   </soapenv:Body>
</soapenv:Envelope>

我收到以下错误:

错误 #6254:需要标记,XML 输入,这是标题,作为 UserName 的子级格式不正确(在第 3 行字符 18 处结束)。

XML 的正确格式是什么,以便正确设置 UserName?

4

2 回答 2

1

只需要改变:

Property UserName As %String;

Property UserName As %String(XMLPROJECTION = "CONTENT", MAXLEN = 50);
于 2012-12-04T16:15:12.693 回答
0

看看这里的例子:http: //www.w3schools.com/soap/soap_header.asp

注意: Header 元素的所有直接子元素都必须是命名空间限定的。

在此示例中,XML 的格式似乎有点不同,将命名空间嵌套为 Header 属性“Trans”的属性(在他们的示例中)。这可能是一个延伸,但我确实看到您的请求没有像这样明确设置命名空间。

于 2012-11-12T18:41:41.927 回答