在向WCF发布WebService服务发送Post请求时,路径填写正确,但请求Header头里的Content-Type内容填写为错误信息text/xml111,会直接返回415的错误信息,现在想在服务端拦截此错误,然后返回自定的错误消息!
如下图所示:
正常情况返回的结果数据:
返回结果数据:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:srrc="http://www.srrc.org.cn">
soapenv:Header
<srrc:ProviderResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
srrc:bizResCdBIZ-00002-item-not-found</srrc:bizResCd>
srrc:bizResText业务服务调用失败</srrc:bizResText>
</srrc:ProviderResponse>
</soapenv:Header>
soapenv:Body
<srrc:responsebody xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
srrc:error
srrc:typecancel</srrc:type>
srrc:codeBIZ-00002-item-not-found</srrc:code>
srrc:text监测设备不存在</srrc:text>
</srrc:error>
</srrc:responsebody>
</soapenv:Body>
</soapenv:Envelope>
你的WCF服务是不是restful,看一下配置里是否有binding="WSHttpBinding"。
WCF中常用的binding方式:http://www.cnblogs.com/Anima0My/archive/2008/04/16/1156146.html
其实直接用WebApi不是更好么。
用的是BasicHttpBinding绑定!
@chchron: 返回的结果是什么类型啊,你这里Headers->Body->是Text,你要返回String类型
返回结果示例:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:srrc="http://www.srrc.org.cn">
soapenv:Header
<srrc:ProviderResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
srrc:bizResCdBIZ-00002-unsupported-service</srrc:bizResCd>
srrc:bizResText监测设施不支持此服务</srrc:bizResText>
</srrc:ProviderResponse>
</soapenv:Header>
soapenv:Body
<srrc:responsebody xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
srrc:error
srrc:typemodify</srrc:type>
srrc:codeBIZ-00002-unsupported-service</srrc:code>
srrc:text监测设施不支持此服务</srrc:text>
</srrc:error>
</srrc:responsebody>
</soapenv:Body>
</soapenv:Envelope>
你好,我用cxf生成java代码,这个命名空间前缀srrc没有,你是怎么解决的
– RickMoti 3年前