`

利用Java Xfire调用WebService接口

 
阅读更多

本文中介绍如何根据一个webservice串来访问接口中的方法,至于如何建立webservice服务器请见另一篇文章:基于Java的WebService(XFire)。

 

例如对方公司给的webservice串为:http://188.16.225.190:8080/TT/services/QbldService?wsdl

 

开发的方法为:testa(String args),testb(String args).

 

可以通过如下方法给testa传递数据。

 

Java代码  
  1. package com.neusoft;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.InputStream;   
  5. import java.net.URL;   
  6. import java.util.Properties;   
  7.   
  8. import org.codehaus.xfire.client.Client;   
  9.   
  10. public class TestProperties {   
  11.   
  12.     /**  
  13.      * @param args  
  14.      */  
  15.     public static void main(String[] args) throws Exception {   
  16.         // TODO Auto-generated method stub   
  17.         new TestProperties().load();   
  18.     }   
  19.   
  20.     public void load() throws Exception {   
  21.         // 获得配置文件,qbldInterface.properties文件放在了src文件夹下   
  22.         InputStream inputStream = this.getClass().getClassLoader()   
  23.                 .getResourceAsStream("qbldInterface.properties");   
  24.         Properties p = new Properties();   
  25.         try {   
  26.             // 把配置文件载入Properties类   
  27.             p.load(inputStream);   
  28.             //System.out.println(p.getProperty("a"));   
  29.             System.out.println(p.getProperty("qbptjk"));   
  30.   
  31.             String serviceUrl = p.getProperty("qbptjk");   
  32.   
  33.             // 如果不用读取文件的方法,可以把serviceUrl替换为http://172.16.225.170:8080/TT/services/QbldService?wsdl   
  34.             Client c = new Client(new URL(serviceUrl));   
  35.             /**  
  36.              * invoke中的第一个参数为要调用的方法 String  
  37.              * invoke中的第二个参数为要传递给该方法的参数 Object[]  
  38.              * invoke的返回值是个Object[],接收远程方法的返回值  
  39.              */  
  40.             Object[] result = c.invoke("testa"new String[] { "张三" });   
  41.             System.out.println(result[0]);   
  42.   
  43.         } catch (IOException e) {   
  44.             // TODO Auto-generated catch block   
  45.             e.printStackTrace();   
  46.         }   
  47.     }   
  48.   
  49. }   

 

qbldInterface.properties文件如下 :

 

Properties代码  
  1. qbptjk=http://172.16.225.170:8080/TT/services/QbldService?wsdl   

 

如果服务器端出现这个错误的解决办法:

com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog

把服务器端用到的xml编码改为GBK.(原来应该是UTF-8)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics