IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> webservice接口发布和调用 -> 正文阅读

[Java知识库]webservice接口发布和调用

接口发布

依赖包

<dependency>
	<groupId>org.apache.cxf</groupId>
	<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
	<version>3.3.1</version>
</dependency>

接口层

//IdtpWebservice 发布服务的名称
//targetNamespace 服务的命名空间
@WebService(name = "IdtpWebservice",targetNamespace = "http://webservice.brt.com")
public interface IdtpWebservice {
//test 指定参数名称,不指定就是arg0、arg1....argn。
	@WebMethod
	String noParams(@WebParam(name = "test",targetNamespace = "http://webservice.brt.com")String transId);
	}

实现层

//endpointInterface 指向接口层的全路径
//targetNamespace 和接口层保持一致
//serviceName 接口层的名称
@WebService(endpointInterface = "com.brt.govInfoManager.infoEditing.core.service.idtp.IdtpWebservice",
			targetNamespace = "http://webservice.brt.com",
			serviceName = "IdtpWebservice")
@Component
public class IdtpWebserviceImpl implements IdtpWebservice{
	@Override
	public String noParams( String transId) {
		return "调用成功"+transId;
	}
}

配置

默认地址:http://ip:port/services/【服务名】?wsdl

@Configuration
public class idtpConfig {
	@Bean
	public ServletRegistrationBean CXFServlet() {
		//修改services为webservice
		return new ServletRegistrationBean(new CXFServlet(),"/webservice/*");
	}
	
	@Bean(name = Bus.DEFAULT_BUS_ID)
    public SpringBus springBus() {
      return new SpringBus();
	}
	 @Bean
	 public IdtpWebservice webService() {
		 return new IdtpWebserviceImpl();
	 }
	 @Bean
	   public Endpoint endpoint() {
	      EndpointImpl endpoint = new EndpointImpl(springBus(), webService());
	      //发布的服务名称
	      endpoint.publish("/IdtpWebservice");
	      return endpoint;
	   }

}

使用postman调用
在这里插入图片描述
web:命名空间,
noParams:方法的名称
test:参数的名称

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2003/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2003/XMLSchema/" 
xmlns:web="http://webservice.brt.com">
    <soap:Body>
        <web:noParams>
            <web:test>1111</web:test>
        </web:noParams>
    </soap:Body>
</soap:Envelope>

接口调用

cxf方式调用

依赖和上面一样

		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		Client client = dcf.createClient("服务地址:http://ip:port/服务名?wsdl");
		QName qName = new QName("命名空间", "方法名称");//待调整
		Object[] objects = null;
		try {
		//参数按照顺序传输,顺序可从wsdl文档查看。
			objects = client.invoke(qName, 
					viewldtpFileSend.getTransId(), 
					viewldtpFileSend.getFileType(),
					viewldtpFileSend.getFileName(), 
					viewldtpFileSend.getFile(), 
					viewldtpFileSend.getFragId(), 
					viewldtpFileSend.getExt1());
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}

httpClient方式调用

			URL url = new URL(wsdl);
	        HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
	        //POST必须大写  
	        connection.setRequestMethod("POST");  
	        connection.setRequestProperty("content-type", "text/xml;charset=utf-8"); 
	      //设置输入输出,因为默认新创建的connection没有读写权限,  
	        connection.setDoInput(true);  
	        connection.setDoOutput(true); 
	      //组织SOAP数据,发送请求  
			String soapXML = this.getXML(viewldtpFormSend); 
	      //将信息以流的方式发送出去
	        OutputStream os = connection.getOutputStream();  
	        os.write(soapXML.getBytes());  
	        //第五步:接收服务端响应,打印 
	        int responseCode = connection.getResponseCode();  
	        StringBuilder sb = new StringBuilder();
	      //获取当前连接请求返回的数据流
            InputStream is = connection.getInputStream();  
            InputStreamReader isr = new InputStreamReader(is);  
            BufferedReader br = new BufferedReader(isr);  
            String temp = null;  
            while(null != (temp = br.readLine())){  
                sb.append(temp);  
            }  
            /**
             * 打印结果
             */
            is.close();  
            isr.close();  
            br.close();  
            os.close();
            this.logger.info("单导发送至方法:{},结果:{}",method,sb.toString());
	        if(200 == responseCode){//表示服务端响应成功  
	            return true;
	        }

拼装XML数据:

	public String getXML(ViewldtpFormSend viewldtpFormSend) {
		String soapXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"  
	        +"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2003/XMLSchema-instance\" " 
			+"xmlns:web=\"http://webservice.brt.com\"  " 
	        +"xmlns:xsd=\"http://www.w3.org/2003/XMLSchema\" " 
			+"xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"  
	            +"<soap:Body>"  
	              +"<web:ldtpFormSend>"    
	              +"<web:transId>"+viewldtpFormSend.getTransId()+"</web:transId>"
	              +"<web:appId>"+viewldtpFormSend.getAppId()+"</web:appId>"
	              +"<web:formType>"+viewldtpFormSend.getFormType()+"</web:formType>"
	              +"<web:form>"+viewldtpFormSend.getForm()+"</web:form>"
	              +"<web:ext1>"+viewldtpFormSend.getExt1()+"</web:ext1>"
	              +"</web:ldtpFormSend>"  
	            +"</soap:Body>"  
	        +"</soap:Envelope>";  

		this.logger.info("ldtpFileSendXML"+soapXML);
		return soapXML;
    }
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:08:34  更:2022-02-24 15:10:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:59:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码