Mot*_*azi 6 java spring soap web-services spring-ws
我已经构建了 Spring WS 应用程序(基于 Spring WS 2.2.3),它公开了一个带有几个操作的小型 Web 服务。每个操作接收输入参数以搜索后端数据库并返回响应。一些参数是强制性的(例如街道名称),并且客户端要求如果对服务的请求缺少其中一些强制性参数(例如空街道名称),那么我的服务应该返回正确的 SOAP 错误,HTTP 状态为 400。
我的异常处理工作正常,如果请求消息中缺少某些必需的参数,我能够将正确的 SOAP 错误返回给客户端,并且 Spring WS 通过包装 SOAP 错误并将其发送回客户端来处理其余部分状态码为 500,如下所示:
HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
SOAPAction: ""
Content-Type: text/xml;charset=utf-8
Content-Length: 503
Date: Thu, 10 Dec 2015 22:28:02 GMT
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring xml:lang="en">Street Name is required</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)
这很好,除了我真的希望 HTTP 状态代码是“400 错误请求”而不是“ 500 内部服务器错误”我不知道如何将状态代码从 500 更改为 400 并获得类似的响应下列的:
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
SOAPAction: ""
Content-Type: text/xml;charset=utf-8
Content-Length: 503
Date: Thu, 10 Dec 2015 22:28:02 GMT
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring xml:lang="en">Street Name is required</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
| 归档时间: |
|
| 查看次数: |
2455 次 |
| 最近记录: |