2014-01-23 70 views
0

我使用的Axis2创建ADB-存根访问SOAP服务,我应该响应得到的sessionId和饼干,然后用另一个请求发送...如何让HTTP响应头存根

我需要得到这个参数你可以在图片

http://www.imageup.ru/img36/1635686/skrinshot-2014-01-23-104646.png

MessageContext msgCtx = serviceStub._getServiceClient().getLastOperationContext().getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE); 
msgCtx.getProperty(HTTPConstants.HTTP_HEADERS); 
SOAPHeader soapHeader = msgCtx.getEnvelope().getHeader(); 

我想这些看到的,但我能得到导致:( 我设立manageSession参数为true。

当我debuged请求和响应我得到了下面的日志:

2014/01/23 12:35:55:372 ALMT [DEBUG] header - << "HTTP/1.1 200 OK[\r][\n]" 
2014/01/23 12:35:55:372 ALMT [DEBUG] header - << "HTTP/1.1 200 OK[\r][\n]" 
2014/01/23 12:35:55:372 ALMT [DEBUG] header - << "Cache-Control: private, max-age=0[\r][\n]" 
2014/01/23 12:35:55:372 ALMT [DEBUG] header - << "Content-Length: 505[\r][\n]" 
2014/01/23 12:35:55:372 ALMT [DEBUG] header - << "Content-Type: text/xml; charset=utf-8[\r][\n]" 
2014/01/23 12:35:55:372 ALMT [DEBUG] header - << "Server: Microsoft-IIS/7.5[\r][\n]" 
2014/01/23 12:35:55:382 ALMT [DEBUG] header - << "X-AspNet-Version: 2.0.50727[\r][\n]" 
2014/01/23 12:35:55:382 ALMT [DEBUG] header - << "Set-Cookie: ASP.NET_SessionId=agj1njnpvoerup45tqnmsz45; path=/; HttpOnly[\r][\n]" 
2014/01/23 12:35:55:382 ALMT [DEBUG] header - << "X-Powered-By: ASP.NET[\r][\n]" 
2014/01/23 12:35:55:382 ALMT [DEBUG] header - << "Date: Thu, 23 Jan 2014 06:35:59 GMT[\r][\n]" 
2014/01/23 12:35:55:382 ALMT [DEBUG] header - << "[\r][\n]" 
2014/01/23 12:35:55:382 ALMT [DEBUG] CookieSpec - Unrecognized cookie attribute: name=HttpOnly, value=null 
2014/01/23 12:35:55:382 ALMT [DEBUG] HttpMethodBase - Cookie accepted: "$Version=0; ASP.NET_SessionId=agj1njnpvoerup45tqnmsz45; $Path=/" 

请帮助我。

回答

3

多痛苦之后,我找到了答案...... 我检索Axis2的存根响应饼干下面的代码:

 

     CommonsTransportHeaders cth = (CommonsTransportHeaders) msgCtx.getProperty(MessageContext.TRANSPORT_HEADERS); 
     String cookie = (String) cth.get(WSConstants.SET_COOKIE); 
 

我希望这会帮助别人:)