首页 新闻 会员 周边

WCF发布WebService服务,在服务端怎样拦截415错误

0
悬赏园豆:200 [待解决问题]

在向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>

chchron的主页 chchron | 初学一级 | 园豆:2
提问于:2021-01-21 12:03

你好,我用cxf生成java代码,这个命名空间前缀srrc没有,你是怎么解决的

RickMoti 2年前
< >
分享
所有回答(1)
0

你的WCF服务是不是restful,看一下配置里是否有binding="WSHttpBinding"。
WCF中常用的binding方式:http://www.cnblogs.com/Anima0My/archive/2008/04/16/1156146.html

其实直接用WebApi不是更好么。

为乐而来 | 园豆:1432 (小虾三级) | 2021-01-21 16:06

用的是BasicHttpBinding绑定!

支持(0) 反对(0) chchron | 园豆:2 (初学一级) | 2021-01-21 16:21

@chchron: 返回的结果是什么类型啊,你这里Headers->Body->是Text,你要返回String类型

支持(0) 反对(0) 为乐而来 | 园豆:1432 (小虾三级) | 2021-01-21 16:33

返回结果示例:
<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>

支持(0) 反对(0) chchron | 园豆:2 (初学一级) | 2021-01-21 18:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册