java .net webservice_java调用.net的webservice接口

要调用webservice,首先得有接口,用已经写好的接口地址在myEclipse的目标project中,右键->new web service client->

36ba59e29a901a60a55abcd79716d733.png

选择JAX-WS方式,点击“next”,看到以下界面:输入webservice接口地址,然后选择你要生成客户端的package包,不选择默认是项目的default包。

5692ac0396d7c5bc813835ec0136861e.png

点击“next”,进入验证环节,再次点击“next”,进入以下界面:如果在新建项目时new的是web service project,这两项不需要勾选,否则要勾选上。

71944f4c2551f7449f2b6cdd4b72ea22.png

最后点击“finish”完成。这样就生成了webservice的客户端。

接下来,在目标project程序中调用.net的webservice接口,推荐的方式是在资源文件中配置adapterDomain(等于wsdlLocation值),namespaceURI(等于targetNamespace的值),localPart(等于service的name)三个变量,这样是为了程序的可移植性更好,例如:在default.properties文件中定义这三个变量:

adapterDomain=http://192.168.1.104/ssd/AdapterService/AdapterService.asmx?wsdl

namespaceURI=http://tempuri.org/

localPart=AdapterService

需要声明的是,这三个变量可以在http://192.168.1.104/ssd/AdapterService/AdapterService.asmx?wsdl这个接口地址或者生成的客户端的注解为@WebServiceClient的类中找到。

然后,在本项目新建一个CallWebService类:

1 public classCallWebservice {2 static Logger logger = Logger.getLogger(CallWebservice.class.getName());3

4 privateString adapterDomain;5 privateString namespaceURI;6 privateString localPart;7

8 publicCallWebservice(String adapterDomain,String namespaceURI,String localPart) {9 super();10 this.adapterDomain =adapterDomain;11 this.namespaceURI =namespaceURI;12 this.localPart =localPart;13 }14 public AdapterServicePortBinding initPortBind() throwsException{15 AdapterServicePortBinding adapterService = null;16 URL url;17 url = newURL(adapterDomain);18 QName qName = newQName(namespaceURI,localPart);19 javax.xml.ws.Service service =javax.xml.ws.Service.create(url, qName);20 adapterService = service.getPort(AdapterServicePortBinding.class);21 returnadapterService;22 }23

24

25 public String getAll() throwsException {26 returninitPortBind().getAll();27 }

AdapterServicePortBinding 是暴露了接口方法的类,不同的写法可能有不同的结果。这里方法getAll()是在接口中声明的方法,且在AdapterServicePortBinding 类中发布到网络中的。

这时,我们就可以在程序中调用这个接口的方法了。

但在这之前,要先写一个读取资源文件的util工具类:PropertiesUtil

1 public classPropertiesUtil {2

3 static Logger logger = Logger.getLogger(PropertiesUtil.class.getName());4 private static PropertiesUtil instance = null;5 private static String file = null;6 private Properties props = newProperties();7 private static InputStream in = null;8

9 public static synchronizedPropertiesUtil getInstance() {10 if (instance == null) {11 instance = newPropertiesUtil();12 }13 returninstance;14 }15

16 publicPropertiesUtil() {17 }18

19 public voidinit(String inputFile) {20 if (!inputFile.equals(file)) {21 file =inputFile;22 try{23 //in = new BufferedInputStream(new FileInputStream(inputFile));

24 in = PropertiesUtil.class.getClassLoader().getResourceAsStream(inputFile);25 props.load(in);26 } catch(Exception e) {27 logger.error("错误:配置文件操作失败, 初始化属性文件失败");28 logger.error(e);29 System.out.println("错误:配置文件操作失败, 初始化属性文件失败\n" + DateUtil.getInstance().formatterDate(new Date()) + " " +getClass().getName());30 //e.printStackTrace();

31 }32 }33 }34

35 publicString readValue(String key) {36 String value =props.getProperty(key);37 returnvalue;38 }

好了,现在可以来调用了。

例如,我在UserService类中这样写:

1 publicString findAuthorTreeStr(){2 //调用方法获取CallWebservice 对象,并调用接口方法

3 List list = this.getService().getAll();4 5 }

6

7 /**

8 * 呼叫Webservice,获取实例9 *@return

10 */

11 publicCallWebservice getService(){12 PropertiesUtil propertiesUtil =PropertiesUtil.getInstance();13 propertiesUtil.init("default.properties");14 adapterDomain =propertiesUtil.readValue(adapterDomain);15 namespaceURI =propertiesUtil.readValue(namespaceURI);16 localPart =propertiesUtil.readValue(localPart);17

18 CallWebservice service = newCallWebservice(adapterDomain, namespaceURI, localPart);19 returnservice;20 }

这样就完成了一次webservice调用。笔记结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值