我创建了一个简单的头类:
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?
答案 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”的属性(在其示例中)。这可能是一个延伸,但我确实看到你的请求没有像这样显式设置名称空间。