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

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

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

最后点击“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类:

 public class CallWebservice {
static Logger logger = Logger.getLogger(CallWebservice.class.getName()); private String adapterDomain;
private String namespaceURI;
private String localPart; public CallWebservice(String adapterDomain,String namespaceURI,String localPart) {
super();
this.adapterDomain = adapterDomain;
this.namespaceURI = namespaceURI;
this.localPart = localPart;
}
public AdapterServicePortBinding initPortBind() throws Exception{
AdapterServicePortBinding adapterService = null;
URL url;
url = new URL(adapterDomain);
QName qName = new QName(namespaceURI,localPart);
javax.xml.ws.Service service = javax.xml.ws.Service.create(url, qName);
adapterService = service.getPort(AdapterServicePortBinding.class);
return adapterService;
} public String getAll() throws Exception {
return initPortBind().getAll();
}

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

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

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

 public class PropertiesUtil {

     static Logger logger = Logger.getLogger(PropertiesUtil.class.getName());
private static PropertiesUtil instance = null;
private static String file = null;
private Properties props = new Properties();
private static InputStream in = null; public static synchronized PropertiesUtil getInstance() {
if (instance == null) {
instance = new PropertiesUtil();
}
return instance;
} public PropertiesUtil() {
} public void init(String inputFile) {
if (!inputFile.equals(file)) {
file = inputFile;
try {
// in = new BufferedInputStream(new FileInputStream(inputFile));
in = PropertiesUtil.class.getClassLoader().getResourceAsStream(inputFile);
props.load(in);
} catch (Exception e) {
logger.error("错误:配置文件操作失败, 初始化属性文件失败");
logger.error(e);
System.out.println("错误:配置文件操作失败, 初始化属性文件失败\n" + DateUtil.getInstance().formatterDate(new Date()) + " " + getClass().getName());
//e.printStackTrace();
}
}
} public String readValue(String key) {
String value = props.getProperty(key);
return value;
}

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

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

 public String findAuthorTreeStr(){
//调用方法获取CallWebservice 对象,并调用接口方法
List list = this.getService().getAll();
} /**
* 呼叫Webservice,获取实例
* @return
*/
public CallWebservice getService(){
PropertiesUtil propertiesUtil = PropertiesUtil.getInstance();
propertiesUtil.init("default.properties");
adapterDomain = propertiesUtil.readValue(adapterDomain);
namespaceURI = propertiesUtil.readValue(namespaceURI);
localPart = propertiesUtil.readValue(localPart); CallWebservice service = new CallWebservice(adapterDomain, namespaceURI, localPart);
return service;
}

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

java调用.net的webservice接口的更多相关文章

  1. java 调用wsdl的webservice接口 两种调用方式

    关于wsdl接口对于我来说是比较头疼的 基本没搞过.一脸懵 就在网上搜 看着写的都很好到我这就不好使了,非常蓝瘦.谨以此随笔纪念我这半个月踩过的坑... 背景:短短两周除了普通开发外我就接到了两个we ...

  2. java调用第三方的webservice应用实例

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示. 一些常用的webservice网站的链接地址: ...

  3. java调用第三方的webservice应用实例【转载】

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示. 一些常用的webservice网站的链接地址: ...

  4. python实现建立soap通信(调用及测试webservice接口)

    实现代码如下: #调用及测试webservice接口 import requests class SoapConnect: def get_soap(self,url,data): r = reque ...

  5. java调用.net的webservice

    目录(?)[-] 一参考文献 二概述 三实例 注意点   一.参考文献 1. http://www.cnblogs.com/xuqifa100/archive/2007/12/13/993926.ht ...

  6. 转 java调用php的webService

    1.首先先下载php的webservice包:NuSOAP,自己到官网去下载,链接就不给出来了,自己去google吧    基于NoSOAP我们写了一个php的webservice的服务端,例子如下: ...

  7. Java 调用 Hbase API 访问接口实现方案

    HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件 ...

  8. Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用

    近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...

  9. 具有相同名称 的类/接口已在使用。请使用类定制设置来解决此冲突。java调用第三方的webservice应用实例

    WSDLToJava Error: http://10.96.84.124:81/BTRPWebServiceForSMB/OnSMBOrderService.svc?xsd=xsd0 [0,0]: ...

随机推荐

  1. Android:状态栏禁用时蓝牙多文件传输弹窗及进度显示

    一.蓝牙文件传输弹窗 Android原生蓝牙传输文件时,会弹出蓝牙文件接收的确认框且默认是以notification的形式显示在状态栏,当用户点击之后才会弹出一个dialog.那么当状态栏被禁用时,如 ...

  2. Windows10下Anaconda虚拟环境下安装pycocotools

    0 - 步骤 安装visualcppbuildtools_full.exe(链接:https://blog.csdn.net/u012247418/article/details/82314129) ...

  3. iOS 字符串和图片互转

    for (UIImage *myImg in _imgArray) { NSData *imageData = UIImageJPEGRepresentation(myImg,0.5); NSStri ...

  4. (十)会话跟踪技术之Session

    ---部分转自孤傲苍狼博客 一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此 ...

  5. [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /usr/local/nginx/conf/nginx.conf:1

    带有sudo 权限执行就可以了

  6. python 函数、参数及参数解构

    函数 数学定义 y=f(x), y是x函数,x是自变量.y=f(x0,x1...xn) Python函数 由若干语句组成的语句块,函数名称,参数列表构成,它是组织代码的最小单位 完成一定的功能 函数作 ...

  7. 细说可空类型 nullable PropertyType

    可空类型是System.Nullable结构体的实列.一个可空类型代表了相应值类型的正确范围附加null值.这么说来,其实也不是很明子,命题嘛,一般不求易懂,但求准确. 那我就来说说这可空类型吧,上次 ...

  8. vue-slicksort拖拽组件

    vue-slicksort拖拽组件 安装 通过npm安装 $ npm install vue-slicksort --save 通过yarn安装 $ yarn add vue-slicksort 插件 ...

  9. iOS-UINavigationController多控制器管理

    UINavigationController 7.8.1 添加子控制器进栈 UINavigationController *nav = [[UINavigationController alloc]  ...

  10. 【Kail 学习笔记】Dmitry信息收集工具

    DMitry(Deepmagic Information Gathering Tool)是一个一体化的信息收集工具.它可以用来收集以下信息: 根据IP(或域名)来查询目标主机的Whois信息 在Net ...