加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

简单CXF方式的webService客户端调用范例

发布时间:2020-12-16 23:07:46 所属栏目:安全 来源:网络整理
导读:? ?一般webServices发布后需要测试一下,是否可行通,在此我把自己所测试的 调用 webService 的简单范例贴出来供新手参考。如有不足,请多指教。 ? 1:需要借助的包: wss4j-1.5.4.jar??? cxf-bundle-2.1.3.jar 2: ? Java代码 package ?con.transnal.ucenter

? ?一般webServices发布后需要测试一下,是否可行通,在此我把自己所测试的 调用 webService 的简单范例贴出来供新手参考。如有不足,请多指教。

?

1:需要借助的包: wss4j-1.5.4.jar??? cxf-bundle-2.1.3.jar

2:

?

Java代码

  1. package?con.transnal.ucenter.client; ??
  2. ??
  3. import?java.lang.reflect.Proxy; ??
  4. import?java.util.HashMap; ??
  5. import?java.util.Map; ??
  6. ??
  7. //import?net.sxinfo.ucenter.services.UCenterService; ??
  8. //此处就为你发布的?webService的?源代码,此处我把它打成?jar?包了. ??
  9. //一般在开发中,你可以建一个webService?Clietn?来引用?webService的wsdl ??
  10. ??
  11. import?org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor; ??
  12. import?org.apache.cxf.configuration.jsse.TLSClientParameters; ??
  13. import?org.apache.cxf.endpoint.Client; ??
  14. import?org.apache.cxf.frontend.ClientProxy; ??
  15. import?org.apache.cxf.jaxws.JaxWsProxyFactoryBean; ??
  16. import?org.apache.cxf.transport.http.HTTPConduit; ??
  17. import?org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor; ??
  18. import?org.apache.ws.security.WSConstants; ??
  19. import?org.apache.ws.security.handler.WSHandlerConstants; ??
  20. import?org.junit.Test; ??
  21. ??
  22. /** ?
  23. ?*?客户端程序 ?
  24. ?*? ?
  25. ?*?@author?RenWeigang ?
  26. ?*/??
  27. public?class?UCenterServiceClientTest?{ ??
  28. ??
  29. ????@Test??
  30. ????public?void?testCreateUser()?throws?Exception?{ ??
  31. ????????UCenterService?ucenterService?=?getUCenterService(); ??
  32. ????????String?result?=?ucenterService.createUser("renweigang",?"123456789",??"123456@test.com"); ??
  33. ????????System.out.println(result); ??
  34. ????} ??
  35. ???? ??
  36. ????private?UCenterService?getUCenterService()?{ ??
  37. ????????return?getNotSSLUCenterService(); ??
  38. ????} ??
  39. ???? ??
  40. ????private?UCenterService?getNotSSLUCenterService() ??
  41. ????{ ??
  42. ????????JaxWsProxyFactoryBean?factory?=?new?JaxWsProxyFactoryBean(); ??
  43. ????????factory.setServiceClass(UCenterService.class); ??
  44. //此处的地址为对方发布的?webService的地址。 ??
  45. ????????factory.setAddress("http://uc.cun365.com/ucenter/ucenter/services/UCenterService"); ??
  46. ????????System.setProperty("org.apache.cxf.bus.factory",?"org.apache.cxf.bus.CXFBusFactory"); ??
  47. ????????UCenterService?ucenterService?=?(UCenterService)?factory.create(); ??
  48. ????????ClientProxy?proxy?=?(ClientProxy)?Proxy.getInvocationHandler(ucenterService); ??
  49. ????????Client?client?=?proxy.getClient(); ??
  50. ????????//?③添加流模型和DOM模型转换的Handler ??
  51. ???? ??
  52. ????????//client.getOutInterceptors().add(new?SAAJOutInterceptor()); ??
  53. ???????? ??
  54. ????????Map<String,Object>?properties?=?new?HashMap<String,Object>(); ??
  55. ????????//?④-1动作 ??
  56. ????????properties.put(WSHandlerConstants.ACTION,?WSHandlerConstants.USERNAME_TOKEN?+?"?"?+?WSHandlerConstants.TIMESTAMP); ??
  57. ????????//?PW_TEXT?明文?,PW_DIGEST?摘要 ??
  58. ????????//?PasswordDigest是通过非保密渠道发送用户名和口令的最佳方法。即使使用XML加密对<wsse:Password>元素进行加密,PasswordText依然可以使用 ??
  59. ???? ??
  60. ????????properties.put(WSHandlerConstants.USER,?"services-test");//?④-3指定用户 ??
  61. ????????properties.put(WSHandlerConstants.PASSWORD_TYPE,?WSConstants.PW_TEXT); ??
  62. ????????properties.put(WSHandlerConstants.PW_CALLBACK_CLASS,?UtPasswordHandler.class.getName()); ??
  63. ????????WSS4JOutInterceptor?wss4j?=?new?WSS4JOutInterceptor(properties); ??
  64. ????????client.getOutInterceptors().add(wss4j); ??
  65. ???????? ??
  66. ???????? ??
  67. ????????return?ucenterService; ??
  68. ????} ??
  69. }??
Java代码

  1. ?<PRE?class=java?name="code">package?net.sxinfo.ucenter.client; ??
  2. ??
  3. import?java.util.HashMap; ??
  4. import?java.util.Map; ??
  5. ??
  6. import?javax.security.auth.callback.Callback; ??
  7. import?javax.security.auth.callback.CallbackHandler; ??
  8. ??
  9. import?org.apache.ws.security.WSPasswordCallback; ??
  10. ??
  11. public?class?UtPasswordHandler?implements?CallbackHandler?{ ??
  12. ????//?①客户端用户模拟数据库 ??
  13. ??
  14. ????private?static?final?Map<String,String>?pwMockDB?=?new?HashMap<String,String>(); ??
  15. ??
  16. ??????????????//一般真正开发中,对方的webService指定用户,此处的?services-//test?为用户名,test?为密码。 ??
  17. ????static{ ??
  18. ????pwMockDB.put("services-test",?"test"); ??
  19. ????} ??
  20. ???? ??
  21. ????public?void?handle(Callback[]?callbacks)?{ ??
  22. ??
  23. ????WSPasswordCallback?callback?=?(WSPasswordCallback)?callbacks[0]; ??
  24. ??
  25. ????String?id?=?callback.getIdentifer(); ??
  26. ????//?②获取用户对应的密码 ??
  27. ????callback.setPassword(pwMockDB.get(id)); ??
  28. ??
  29. ????} ??
  30. }</PRE

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读