我调用身份验证请求以接收会话ID:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<loginResponse xmlns="urn:company" xmlns:ns2="urn:company">
<result>
<sessionId>2342422342.dc8bizxsfapi03</sessionId>
<msUntilPwdExpiration>2342342342342353452323</msUntilPwdExpiration>
</result>
</loginResponse>
</S:Body>
</S:Envelope>
在我正在使用的Soap API的文档中指出:
A successful login will return a
session ID as an HTTP Cookie. This cookie must be passed back to all subsequent HTTP
Requests that invoke API operations in order to authenticate.
会话ID如何传递到下一个http请求,因为未对此进行描述?
我假设我需要将会话ID作为后续请求的一部分嵌入到XML标记中,但这应该在API中进行详细说明,或者是否可以使用标准机制?
您引用的API文档指出,该服务将在需要在任何后续请求上设置的响应上设置cookie。Cookie是通过HTTP标头而不是请求/响应的主体发送的,通常用于建立和维护会话。Web服务框架使用的基础HTTP客户端库可以很好地为您处理此问题,但是由于SOAP Web服务被设计为无状态的,因此通常必须询问该框架是否要维护会话。启用此功能后,它仅表示框架会将所有cookie发送回服务器发送给它的服务器,这正是您的SOAP API文档所要求的。
要在jax-ws中启用此功能,请在RequestContext上将BindingProvider.SESSION_MAINTAIN_PROPERTY设置为true。本文提供了一个示例和更多详细信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句