CXF在项目中的真实运用--WS访问客户端编写[java、.net]

本文介绍了如何在项目中使用CXF实现WebService客户端,重点展示了Java和.NET两种环境下调用WebService的步骤。首先,通过Spring单元测试确保CXF的WS实现功能正确。接着,将WebService部署并提供WSDL地址。然后,给出了Java测试客户端的代码示例,并提供了.NET测试客户端的实现细节。
摘要由CSDN通过智能技术生成

一、首先,CXF的WS实现类由于实现了和Spring的无缝集成,因此可以采用Spring的单元测试来测试基本功能。

代码如下:

package com.defshare.sy.test.biz;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.UUID;

import javax.annotation.Resource;

import org.apache.commons.io.IOUtils;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.junit.Test;

import com.defshare.sy.ws.ISYWebService;
import com.defshare.sy.ws.po.Clinique;
import com.defshare.sy.ws.po.WorkList;
import com.defshare.sy.ws.po.WorkListPicFile;


public class SyWebServiceTest extends SpringTestTemplate{
	
	@Test
	public void testUploadWorkListPicFile(){
	
		//JaxWsProxyFactoryBean proxy = new JaxWsProxyFactoryBean();
		//proxy.setAddress("http://localhost:8090/sy/services/SYWebService");
		//proxy.setServiceClass(ISYWebService.class);
		//ISYWebService clientProxy = (ISYWebService)proxy.create();
		//clientProxy.upLoadWorkListPic("", "",null);
		WorkListPicFile file = new WorkListPicFile();
		String serverFile = UUID.randomUUID().toString()+".DBF";
		 InputStream is = null;  
	        try { 
	            is = new FileInputStream("d:/QUESCTION.DBF");  
	            file.setFileSize(is.available()); 
	            byte[] bytes = new byte[1024 * 1024];  
	            int size=0;
	            do{
	            	 size = is.read(bytes);  
	            	 if (size <= 0) {  
		                    break;  
		                }  
		                  
		                byte[] fixedBytes = Arrays.copyOfRange(bytes, 0, size);  
		                file.setBytes(fixedBytes);
		                
		                file.setServerFile(serverFile);
		                file.setWorkListId("WL0001");
		                int resp = syWebService.upLoadWorkListPic("WS访问账户","WS访问密码", file);
		                System.out.println(resp==0?"本次上传文件块成功":"本次上传文件块异常");
		                if (resp!=0)
		                	break;
		                  
		                file.setPosition(file.getPosition() + fixedBytes.length);     
	            }while(size>0);
	          
	        } catch(IOException e) {  
	           e.printStackTrace();
	        } finally {  
	        	if (is!=null)
					try {
						is.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
	            IOUtils.closeQuietly(is);  
	        }  
	}	
	
	@Test
	public void testremoveWorkList(){
		正常输入数据1					期望结果:成功			实际结果:	
		syWebService.removeWorkList("WS访问账户", "WS访问密码", "q");
	}
	
	@Test
	public void testUpdateWorkList(){
		WorkList wl = new WorkList();
		wl.setGdbh("WL0001");
		wl.setFggdbh("hehe-------");
		syWebService.updateWorkList("WS访问账户", "WS访问密码", wl);
	}
	
	@Test
	public void updateClinique(){
		Clinique c = new Clinique();
		c.setZsid("CL0001");
		c.setDq("金牛区-------");
		System.out.println("*******"+syWebService.updateClinique("WS访问账户", "WS访问密码", c));	
	}
	
	@Resource(name="syWebService")
	private ISYWebService syWebService;
	
	@Resource(name="syWebService")
	public void setSyWebService(ISYWebService syWebService) {
		this.syWebService = syWebService;
	}
}

 

二、待单元测试通过后在进行WebService调用测试,这需要发布这个WebService到服务器上:

我的这个WS发布后的WSDL如下:

http://192.168.1.89:92/services/SYWebService?wsdl

 

  <?xml version="1.0" encoding="UTF-8" ?> 
- <wsdl:definitions name="SYWebService" targetNamespace="http://www.springframework.org/schema/beans" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.springframework.org/schema/beans" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <wsdl:types>
- <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://www.springframework.org/schema/beans" xmlns:tns="http://www.springframework.org/schema/beans" xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <xs:complexType name="WorkListPicFile">
- <xs:sequence>
  <xs:element minOccurs="0" name="workListId" type="xs:string" /> 
  <xs:element minOccurs="0" name="serverFile" type="xs:string" /> 
  <xs:element name="position" type="xs:long" /> 
  <xs:element name="fileSize" type="xs:long" /> 
  <xs:element minOccurs="0" name="bytes" type="xs:base64Binary" /> 
  </xs:sequence>
  </xs:complexType>
- <xs:complexType name="WorkList">
- <xs:sequence>
  <xs:element minOccurs="0" name="gdbh" type="xs:string" /> 
  <xs:element minOccurs="0" name="fggdbh" type="xs:string" /> 
  <xs:element minOccurs="0" name="zsid" type="xs:string" /> 
  <xs:element minOccurs="0" name="ysxm" type="xs:string" /> 
  <xs:element minOccurs="0" name="brxm" type="xs:string" /> 
  <xs:element minOccurs="0" name="ywy" type="xs:string" /> 
  <xs:element minOccurs="0" name="ssdq" type="xs:string" /> 
  <xs:element minOccurs="0" name="fgyy" type="xs:string" /> 
  <xs:element minOccurs="0" name="jjrq" type="xs:string" /> 
  <xs:element minOccurs="0" name="cjrq" type="xs:string" /> 
  <xs:element minOccurs="0" name="jzrq" type="xs:string" /> 
  <xs:element minOccurs="0" name="xgrq" type="xs:string" /> 
  <xs:element minOccurs="0" name="xgcs" type="xs:string" /> 
  <xs:element minOccurs="0" name="luz" type="xs:string" /> 
  <xs:element minOccurs="0" name="cjr" type="xs:string" /> 
  <xs:element minOccurs="0" name="pics" type="xs:string" /> 
  <xs:element maxOccurs="unbounded" minOccurs="0" name="toothSpecs" nillable="true" type="tns:ToothSpec" /> 
  </xs:sequence>
  </xs:complexType>
- <xs:complexType name="ToothSpec">
- <xs:sequence>
  <xs:element minOccurs="0" name="toothSpecId" type="xs:string" /> 
  <xs:element minOccurs="0" name="gdbh" type="xs:string" /> 
  <xs:element minOccurs="0" name="yclx" type="xs:string" /> 
  <xs:element minOccurs="0" name="zl" type="xs:string" /> 
  <xs:element minOccurs="0" name="ys" type="xs:string" /> 
  <xs:element minOccurs="0" name="yw" type="xs:string" /> 
  <xs:element minOccurs="0" name="dx" type="xs:string" /> 
  <xs:element minOccurs="0" name="sl" type="xs:int" /> 
  <xs:element minOccurs="0" name="addsl" type="xs:int" /> 
  <xs:element minOccurs="0" name="jg" type="xs:int" /> 
  <xs:element minOccurs="0" name="hbhid" type="xs:string" /> 
  <xs:element minOccurs="0" name="gx" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
- <xs:complexType name="Clinique">
- <xs:sequence>
  <xs:element minOccurs="0" name="zsid" type="xs:string" /> 
  <xs:element minOccurs="0" name="zsmm" type="xs:string" /> 
  <xs:element minOccurs="0" name="dxts" type="xs:int" /> 
  <xs:element minOccurs="0" name="zsmc" type="xs:string" /> 
  <xs:element minOccurs="0" name="ysxm" type="xs:string" /> 
  <xs:element minOccurs="0" name="lxdh" type="xs:string" /> 
  <xs:element minOccurs="0" name="zsjx" type="xs:string" /> 
  <xs:element minOccurs="0" name="zsdz" type="xs:string" /> 
  <xs:element minOccurs="0" name="dq" type="xs:string" /> 
  <xs:element minOccurs="0" name="dqbh" type="xs:string" /> 
  <xs:element minOccurs="0" name="ywy" type="xs:string" /> 
  <xs:element minOccurs="0" name="ywjl" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  <xs:element name="removeWorkList" type="tns:removeWorkList" /> 
- <xs:complexType name="removeWorkList">
- <xs:sequence>
  <xs:element minOccurs="0" name="arg0" type="xs:string" /> 
  <xs:element minOccurs="0" name="arg1" type="xs:string" /> 
  <xs:element minOccurs="0" name="arg2" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  <xs:element name="removeWorkListResponse" type="tns:removeWorkListResponse" /> 
- <xs:complexType name="removeWorkListResponse">
- <xs:sequence>
  <xs:element name="return" type="xs:int" /> 
  </xs:sequence>
  </xs:complexType>
  <xs:element name="upLoadWorkListPic" type="tns:upLoadWorkListPic" /> 
- <xs:complexType name="upLoadWorkListPic">
- <xs:sequence>
  <xs:element minOccurs="0" name="arg0" type="xs:string" /> 
  <xs:element minOccurs="0" name="arg1" type="xs:string" /> 
  <xs:element minOccurs="0" name="arg2" type="tns:WorkListPicFile" /> 
  </xs:sequence>
  </xs:complexType>
  <xs:element name="upLoadWorkListPicResponse" type="tns:upLoadWorkListPicResponse" /> 
- <xs:complexType name="upLoadWorkListPicResponse">
- <xs:sequence>
  <xs:element name="return" type="xs:int" /> 
  </xs:sequence>
  </xs:complexType>
  <xs:element name="updateWorkList" type="tns:updateWorkList" /> 
- <xs:complexType name="updateWorkList">
- <xs:sequence>
  <xs:element minOccurs="0" name="arg0" type="xs:string" /> 
  <xs:element minOccurs="0" name="arg1" type="xs:string" /> 
  <xs:element minOccurs="0" name="arg2" type="tns:WorkList" /> 
  </xs:sequence>
  </xs:complexType>
  <xs:element name="updateWorkListResponse" type="tns:updateWorkListResponse" /> 
- <xs:complexType name="updateWorkListResponse">
- <xs:sequence>
  <xs:element name="return" type="xs:int" /> 
  </xs:sequence>
  </xs:complexType>
  <xs:element name="updateToothSpecGX" type="tns:updateToothSpecGX" /> 
- <xs:complexType name="updateToothSpecGX">
- <xs:sequence>
  <xs:element minOccurs="0" name="arg0" type="xs:string" /> 
  <xs:element minOccurs="0" name="arg1" type="xs:string&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值