在AXIS进行SOAP Header传输时碰到一个SOAP Body中文乱码的怪问题 (转)

在AXIS进行SOAP Header传输时碰到一个SOAP Body中文乱码的怪问题 (转)

代码
  1. xml version="1.0" encoding="UTF-8"?>
  2. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  3. <soapenv:Header>
  4. <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
  5. <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  6. <wsu:Created>2007-08-10T03:14:37.150Zwsu:Created>
  7. <wsu:Expires>2007-08-10T03:19:37.150Zwsu:Expires>
  8. wsu:Timestamp>
  9. <wsse:UsernameToken>
  10. <wsse:Username>ticketwsse:Username>
  11. <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">TICKET_d2c0f036-46ef-11dc-b6c1-47b6df6cf8d2wsse:Password>
  12. wsse:UsernameToken>
  13. wsse:Security>
  14. soapenv:Header>
  15. <soapenv:Body>
  16. <add xmlns="http://www.xxx.com/ws/">
  17. <user>
  18. <ns1:create xmlns:ns1="http://www.xxx.com/ws/test">
  19. <ns1:id>ABC鏂�-鏌ヨ?璇昁XYZ1186715675572ns1:id>

CallbackHandler实现

代码
  1. public class AuthenticationCallbackHandler implements CallbackHandler
  2. {
  3. /** WS security information */
  4. private static final String WS_SECURITY_INFO =
  5. "" +
  6. " <transport name='http' pivot='java:org.apache.axis.transport.http.HTTPSender'/>" +
  7. " <globalConfiguration >" +
  8. " <requestFlow >" +
  9. " <handler type='java:org.apache.ws.axis.security.WSDoAllSender' >" +
  10. " <parameter name='action' value='UsernameToken Timestamp'/>" +
  11. " <parameter name='user' value='ticket'/>" +
  12. " <parameter name='passwordCallbackClass' value='ws.AuthenticationCallbackHandler'/>" +
  13. " <parameter name='passwordType' value='PasswordText'/>" +
  14. " handler>" +
  15. " requestFlow >" +
  16. " globalConfiguration>" +
  17. "deployment>";
  18. //接口的方法实现
  19. public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException
  20. {
  21. for (int i = 0; i < callbacks.length; i++)
  22. {
  23. if (callbacks instanceof WSPasswordCallback)
  24. {
  25. WSPasswordCallback pc = (WSPasswordCallback)callbacks;
  26. pc.setPassword(currentTicket.get());
  27. }
  28. else
  29. {
  30. throw new UnsupportedCallbackException(callbacks, "Unrecognized Callback");
  31. }
  32. }
  33. }
  34. }

// 客户端利用AXIS Ant的任务wsdl2java,生成后,
// 获取服务:

代码
  1. XyzServiceLocator locator = new XyzServiceLocator(AuthenticationCallbackHandler.getEngineConfiguration());
  2. locator.setXyzServiceEndpointAddress("webservice地址");
  3. XyzServiceSoapBindingStub xyzService = (XyzServiceSoapBindingStub)locator.getXyzService();


//调用:

代码
  1. xyzService.create(xxx);//

替换过AXIS 1.3与1.4的包结果都一样,只要不加SOAP Header编码则正常?问题出在哪里?WSS4J上吗?

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12467/viewspace-148275/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12467/viewspace-148275/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值