java调用.net的webservice接口
要调用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接口的更多相关文章
- java 调用wsdl的webservice接口 两种调用方式
关于wsdl接口对于我来说是比较头疼的 基本没搞过.一脸懵 就在网上搜 看着写的都很好到我这就不好使了,非常蓝瘦.谨以此随笔纪念我这半个月踩过的坑... 背景:短短两周除了普通开发外我就接到了两个we ...
- java调用第三方的webservice应用实例
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示. 一些常用的webservice网站的链接地址: ...
- java调用第三方的webservice应用实例【转载】
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示. 一些常用的webservice网站的链接地址: ...
- python实现建立soap通信(调用及测试webservice接口)
实现代码如下: #调用及测试webservice接口 import requests class SoapConnect: def get_soap(self,url,data): r = reque ...
- java调用.net的webservice
目录(?)[-] 一参考文献 二概述 三实例 注意点 一.参考文献 1. http://www.cnblogs.com/xuqifa100/archive/2007/12/13/993926.ht ...
- 转 java调用php的webService
1.首先先下载php的webservice包:NuSOAP,自己到官网去下载,链接就不给出来了,自己去google吧 基于NoSOAP我们写了一个php的webservice的服务端,例子如下: ...
- Java 调用 Hbase API 访问接口实现方案
HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件 ...
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...
- 具有相同名称 的类/接口已在使用。请使用类定制设置来解决此冲突。java调用第三方的webservice应用实例
WSDLToJava Error: http://10.96.84.124:81/BTRPWebServiceForSMB/OnSMBOrderService.svc?xsd=xsd0 [0,0]: ...
随机推荐
- ASP程序中调用Now()总显示“上午”和“下午”,如何解决?
ASP程序中调用Now()总显示这样的格式:“2007-4-20 下午 06:06:38”,我要的正确格式为“2007-4-20 18:06:38”,我已经通过控制面板==>区域和语言选项==& ...
- osg机械臂施工模拟
线程 0x2278 已退出,返回值为 0 (0x0). =====IfcTreeWidget==slotObjectsSelected1IfcObjectAttributeExtraction === ...
- Linux 系统中部署 LNMP 高可用负载均衡架构集群实现动态博客
(一)设计思路 高可用:keepalived 解决方案 负载均衡:(lvs)DR做轮询,需要一个调度器,后端节点两个(部署nginx动态博客),通过一个vip去访问动态博客 后端节点需要部署动态博客作 ...
- 理解ADFS相关概念
核心概念 Claims是?Token是?Security Token是?Security Token Server (STS)是? 声明与令牌无关,但通过封装在安全令牌中来进行网络传输! SSL证书是 ...
- 第一次linux下安装nginx记录
CentOS 7 安装Nginx 并配置自动启动 1.下载Nginx安装包---->地址:http://nginx.org/en/download.html 2.上传安装包到服务期 : rz 命 ...
- react用redux 做的todolist
### 1. 创建项目 create - react - app 项目名(shop) ### 2. 进入项目,下载redux cnpm install redux --save ### 3. ...
- matlab截取图像
声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 对于Matlab的使用情况常常是这样子的,很多零碎的函数名字很难记忆,经常用过后过一段时间就又忘记了,又得去网 ...
- Qt598x64vs2017.跨线程传递std::string
1.Qt编译的时候 提示 str::string 需要在main(...)中注册什么的(大概是这个意思,记不清了),于是 在main(...)中调用了 “qRegisterMetaType<st ...
- 49.Django起步学习
django起步 django安装 pip install django==2.0.4(版本号) pip install django 默认安装最新版本 创建项目 django-admin start ...
- B9 Concurrent 重入锁(ReentrantLock)
[概述] java.util.concurrent.locks.ReentrantLock 实现 java.util.concurrent.locks.Lock 接口,加锁(lock)和 解锁(unl ...