我实际上有一个肥皂袋,如下所述。通过POSTMAN或SOAP UI运行它时,我得到了所需的结果。但是,添加DOCTYPE会给我 400错误的请求。下面是xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE doc
[<!ENTITY win SYSTEM \"file:///C:/Users/user/Documents/testdata2.txt\">]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:koh="http://kohls.com/">
<soapenv:Header/>
<soapenv:Body>
<Process>
<doc>&win;</doc>
<!--Optional:-->
<webEnvelope>
<TraceEvents/>
<Properties>
<PropertyTO Name="Assembly" Value="IS.XS.Rf.Mls"/>
<PropertyTO Name="Type" Value="IS.XS.Rf.Mls.MlsRequestMessage"/>
</Properties>
<Pipeline>MlsMessagePipeline</Pipeline>
<TargetService>RfPriceChanges</TargetService>
<TargetTransaction>GetClearanceTicketLocations</TargetTransaction>
</webEnvelope>
</Process>
</soapenv:Body>
</soapenv:Envelope>
如果我从xml中删除DOCTYPE及其支持标记,它将以200状态代码成功运行。另外,根据网址:https://salesforce.stackexchange.com/questions/171003/soap-message-must-not-contain-a-document-type-declarationdtd
它说SOAP信封不再支持DOCTYPE。另外,我检查了SOAP Doc,但是没有发现与DTD使用有关的任何内容。我想念什么吗?感谢您的帮助
答案 0 :(得分:0)
WS-I Basic Profile特别拒绝SOAP信封中的DTD:
3.2.3不允许的构造
XML DTD和PI可能会引入安全漏洞,处理 在信封中使用时会产生开销和语义歧义。结果是, SOAP 1.2的第5部分禁止使用某些XML构造。
尽管已发布勘误NE05(请参见 http://www.w3.org/XML/xml-names-19990114-errata)允许名称空间 声明xmlns:xml =“ http://www.w3.org/XML/1998/namespace”到 看起来,一些较旧的处理器认为这样的声明是 错误。这些要求确保符合标准的工件具有 尽可能广泛的互操作性。
R1008信封不得包含文档类型声明。核心 可测试的BP1007
R1009信封不得包含处理指令。核心 可测试的BP1208
R1033信封不得包含名称空间声明 xmlns:xml =“ http://www.w3.org/XML/1998/namespace”。核心测试表BP1033
如果需要,可以在soapUI中check WS-I compliance并将其构建到断言中。