更正为要发送缓存Web服务SOAP标头的XML

时间:2012-11-12 16:27:15

标签: xml web-services soap intersystems-cache intersystems

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

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?

2 个答案:

答案 0 :(得分:1)

只需改变:

Property UserName As %String;

Property UserName As %String(XMLPROJECTION = "CONTENT", MAXLEN = 50);

答案 1 :(得分:0)

点击此处的示例:http://www.w3schools.com/soap/soap_header.asp

  

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

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