【JAVA】 CXF 动态请求wsdl接口
原文:https://blog.csdn.net/weixin_41884770/article/details/124032794
在cxf动态请求时,有需要BASIC 用户密码登录的情况,需要使用BUS来对用户名和密码进行处理,如果不需要进行BASIC认证,则去掉BUS部分即可.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import com.alibaba.fastjson.JSON; import org.apache.cxf.Bus; import org.apache.cxf.BusFactory; import org.apache.cxf.configuration.security.AuthorizationPolicy; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; import org.apache.cxf.transport.http.HTTPConduitConfigurer; import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier; import org.apache.cxf.transport.http.auth.HttpAuthSupplier; /** * 请求wsdl 地址 并获取返回参数 * @param userName 用户名 * @param password 密码 * @param wsdlUrl 请求路径 * @param requestMethods 请求方法 * @param port 如果需要区分http 请求和 https请求 则需要提供这个参数 * @param data 请求数据 * @return 返回数据 */ public static String requestWsdlInterface(String userName, String password,String wsdlUrl,String requestMethods,QName port,Object data) { Bus bus = BusFactory.getThreadDefaultBus(); bus.setExtension((name, address, httpConduit) -> { final AuthorizationPolicy authorization = new AuthorizationPolicy(); authorization.setUserName(userName); authorization.setPassword(password); httpConduit.setAuthorization(authorization); final HttpAuthSupplier supplier = new DefaultBasicAuthSupplier(); httpConduit.setAuthSupplier(supplier); }, HTTPConduitConfigurer. class ); JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(bus); Client client = null ; if (port!= null ){ client = factory.createClient( wsdlUrl, null ,port); } else { client = factory.createClient(wsdlUrl); } String response = "" ; try { //得到对象所封装的值 Object objects = client.invoke(requestMethods, data); response = JSON.toJSONString(objects); } catch (Exception e) { e.printStackTrace(); } return response; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律