首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColdFusion11 SOAP操作错误

ColdFusion11 SOAP操作错误
EN

Stack Overflow用户
提问于 2015-08-13 19:25:56
回答 1查看 179关注 0票数 1

我对SOAP非常陌生,但我到处找遍了,似乎找不到答案。我认为这与标记中的SOAPAction有关,但我不确定语法是什么。无论我输入什么,都会产生以下错误:

由于'http://InvoiceCollector.hypur.com/PostInvoice的ContractFilter不匹配,无法在接收端处理带有动作的ContractFilter消息。

这可能是因为契约不匹配(发送方和接收方之间的操作不匹配),或者是发送方和接收方之间的绑定/安全不匹配。检查发送方和接收方是否具有相同的合同和相同的约束力(包括安全要求,例如消息、传输、无)。

我的肥皂身体是这样的:

<cfsavecontent variable="SOAPBody"> <cfoutput> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:dat="http://schemas.datacontract.org/2004/07/DataTransferObjects"> <soapenv:Header/> <soapenv:Body> <tem:PostInvoice> <tem:PoSToken>"XXXXX"</tem:PoSToken> <tem:MerchantToken>"XXXXX"</tem:MerchantToken> <tem:Invoice> <dat:Cash>1</dat:Cash> <dat:Change>1</dat:Change> <dat:CreatedBy>"Me"</dat:CreatedBy> <dat:CurrencyCode>"usd"</dat:CurrencyCode> <dat:DiscountAmount>1</dat:DiscountAmount> <dat:DiscountPercent>1</dat:DiscountPercent> <dat:DueDate>2015-08-13T12:00:00</dat:DueDate> <dat:InvoiceDate>2015-08-13T12:00:00</dat:InvoiceDate> <dat:InvoiceItems> <dat:InvoiceItemDTO> <dat:Description>"Desc"</dat:Description> <dat:DiscountAmount>1</dat:DiscountAmount> <dat:DiscountPercent>1</dat:DiscountPercent> <dat:Name>"Adam"</dat:Name> <dat:Quantity>1</dat:Quantity> <dat:Unit>"lb"</dat:Unit> <dat:UnitPrice>1</dat:UnitPrice> </dat:InvoiceItemDTO> </dat:InvoiceItems> <dat:InvoiceNumber>123</dat:InvoiceNumber> <dat:InvoiceTax>1</dat:InvoiceTax> <dat:IsTaxCalculatedAfterDiscount>false</dat:IsTaxCalculatedAfterDiscount> <dat:MerchantMemo>"Memo"</dat:MerchantMemo> <dat:Note>"Note"</dat:Note> <dat:PaidDate>2015-08-13T12:00:00</dat:PaidDate> <dat:PoSID>2</dat:PoSID> <dat:PoSName>1</dat:PoSName> <dat:Status>1</dat:Status> <dat:SubTotal>1</dat:SubTotal> <dat:TaxInclusive>1</dat:TaxInclusive> <dat:Total>1</dat:Total> </tem:Invoice> </tem:PostInvoice> </soapenv:Body> </soapenv:Envelope> </cfoutput> </cfsavecontent>

我在soapUI中进行了测试,它与网站连接,但有一些奇怪的问题(它会抛出带有任何值的枚举错误,但如果我将其注释掉,则会连接并返回无效PoSToken和MerchantTokens的错误消息,但在正确输入这些信息之后,它根本不会返回任何数据)。

然后,我使用以下代码获取预期的信息:

代码语言:javascript
复制
<cfhttp url="https://devapi.hypur.com/InvoiceCollector/InvoiceCollector.svc?wsdl" method="post" result="httpResponse">
<cfhttpparam type="header" name="SOAPAction" value="http://InvoiceCollector.hypur.com/PostInvoice"/>
<cfhttpparam type="header" name="accept-encoding" value="no-compression"/>
<cfhttpparam type="xml" value="#trim(SOAPBody)#" />
代码语言:javascript
复制
<cfdump var="#soapResponse#">

不管我把什么作为

代码语言:javascript
复制
<cfhttpparam type="header" name="SOAPAction" value="http://InvoiceCollector.hypur.com/PostInvoice"/>

标记它总是抛出相同的错误。

任何帮助都将不胜感激。提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-17 15:47:21

因此,我最终使用了在SOAPAction中提供的soapUI (它位于传出soapUI的Raw选项卡下),并将状态值更改为已付状态值,并使其正常工作。

所以ColdFusion看起来是这样的:

代码语言:javascript
复制
<cfhttp url="https://devapi.hypur.com/InvoiceCollector/InvoiceCollector.svc" method="post" result="httpResponse">
<cfhttpparam type="header" name="SOAPAction" value="http://tempuri.org/IInvoiceCollector/PostInvoice"/>
<cfhttpparam type="xml" value="#trim(SOAPBody)#" />

以防其他人遇到这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31996802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档