java调用.net asmx / wcf
时间:2022-04-23
本文章向大家介绍java调用.net asmx / wcf,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、先用asmx与wcf写二个.net web service:
1.1 asmx web服务:asmx-service.asmx.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.Services;
6
7 namespace WebServiceSample
8 {
9 /// <summary>
10 /// Summary description for asmx_service
11 /// </summary>
12 [WebService(Namespace = "http://yjmyzz.cnblogs.com/")]
13 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
14 [System.ComponentModel.ToolboxItem(false)]
15 // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
16 // [System.Web.Script.Services.ScriptService]
17 public class asmx_service : System.Web.Services.WebService
18 {
19
20 [WebMethod]
21 public string HelloWorld(String msg)
22 {
23 return "Hello " + msg + " !";
24 }
25 }
26 }
1.2 wcf服务:wcf-service.svc.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Runtime.Serialization;
5 using System.ServiceModel;
6 using System.Text;
7 using System.Web.Services;
8
9 namespace WebServiceSample
10 {
11 // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "wcf_service" in code, svc and config file together.
12 // NOTE: In order to launch WCF Test Client for testing this service, please select wcf-service.svc or wcf-service.svc.cs at the Solution Explorer and start debugging.
13 [ServiceContract(Namespace="http://yjmyzz.cnblogs.com/")]
14 [ServiceBehavior(Namespace = "http://yjmyzz.cnblogs.com/")]
15 public class wcf_service
16 {
17 [OperationContract]
18 public String HelloWorld(String msg)
19 {
20 return "Hello " + msg + " !";
21 }
22 }
23 }
1.3 web.config采用默认设置:
1 <?xml version="1.0" encoding="utf-8"?>
2 <configuration>
3 <system.web>
4 <compilation debug="true" targetFramework="4.5.1" />
5 <httpRuntime targetFramework="4.5.1" />
6 </system.web>
7 <system.serviceModel>
8 <behaviors>
9 <serviceBehaviors>
10 <behavior name="">
11 <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
12 <serviceDebug includeExceptionDetailInFaults="false" />
13 </behavior>
14 </serviceBehaviors>
15 </behaviors>
16 <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
17 multipleSiteBindingsEnabled="true" />
18 </system.serviceModel>
19 </configuration>
完成后,访问网址为:
http://localhost:16638/asmx-service.asmx
http://localhost:16638/wcf-service.svc
二、java端的调用:
2.1 pom.xml中先添加以下依赖项:
1 <dependency>
2 <groupId>org.apache.axis</groupId>
3 <artifactId>axis</artifactId>
4 <version>1.4</version>
5 </dependency>
6
7 <dependency>
8 <groupId>org.apache.axis</groupId>
9 <artifactId>axis-jaxrpc</artifactId>
10 <version>1.4</version>
11 </dependency>
12
13 <dependency>
14 <groupId>wsdl4j</groupId>
15 <artifactId>wsdl4j</artifactId>
16 <version>1.6.3</version>
17 </dependency>
18
19 <dependency>
20 <groupId>commons-discovery</groupId>
21 <artifactId>commons-discovery</artifactId>
22 <version>0.5</version>
23 </dependency>
24
25 <dependency>
26 <groupId>commons-logging</groupId>
27 <artifactId>commons-logging</artifactId>
28 <version>1.1.3</version>
29 </dependency>
2.2 asmx web service的调用:
先封装一个方法:
1 String callAsmxWebService(String serviceUrl, String serviceNamespace,
2 String methodName, Map<String, String> params)
3 throws ServiceException, RemoteException, MalformedURLException {
4
5 org.apache.axis.client.Service service = new org.apache.axis.client.Service();
6 Call call = (Call) service.createCall();
7 call.setTargetEndpointAddress(new java.net.URL(serviceUrl));
8 call.setOperationName(new QName(serviceNamespace, methodName));
9
10 ArrayList<String> paramValues = new ArrayList<String>();
11 for (Entry<String, String> entry : params.entrySet()) {
12 call.addParameter(new QName(serviceNamespace, entry.getKey()),
13 XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
14 paramValues.add(entry.getValue());
15 }
16
17 call.setReturnType(XMLType.XSD_STRING);
18 call.setUseSOAPAction(true);
19 call.setSOAPActionURI(serviceNamespace + methodName);
20
21 return (String) call.invoke(new Object[] { paramValues.toArray() });
22
23 }
然后就可以调用了:
1 @Test
2 public void testCallAsmx() throws RemoteException, ServiceException,
3 MalformedURLException {
4
5 Map<String, String> params = new HashMap<String, String>();
6 params.put("msg", "yjmyzz");
7
8 String result = callAsmxWebService(
9 "http://localhost:16638/asmx-service.asmx",
10 "http://yjmyzz.cnblogs.com/", "HelloWorld", params);
11
12 System.out.println(result);
13 }
2.3 wcf服务的调用:
这个要借助IDE环境生成代理类(或者用命令JAVA_HOMEbinwsimport.exe -s c:testjavasrc http://xxx.com/xxx.svc?wsdl)
eclipse环境中,project上右击->New->Other->Web Service Client
输入wsdl的地址,注意:wcf会生成二个wsdl的地址,用xxx?singleWsdl这个,如下图:
直接Finish,会生成一堆java文件:
然后就能调用啦:
1 @Test
2 public void testCallWcf() throws RemoteException, ServiceException,
3 MalformedURLException {
4
5 Wcf_service_ServiceLocator locator = new Wcf_service_ServiceLocator();
6 locator.setBasicHttpBinding_wcf_serviceEndpointAddress("http://localhost:16638/wcf-service.svc");
7 System.out.println(locator.getBasicHttpBinding_wcf_service().helloWorld("jimmy"));
8 }
- LNMP架构之搭建wordpress博客网站
- Nginx的各种报错总结
- 谷歌TensorFlowLite正式发布,机器学习框架向移动端大步挺进!
- ABP+AdminLTE+Bootstrap Table权限管理系统一期
- 18888元秒下的域名sdhlx.com已建站
- 锂离子电池发明人:自动驾驶汽车电池需要更加耐用
- Linux中MySQL5.6编译安装与MySQL5.7二进制安装步骤
- Nginx服务编译安装、日志功能、状态模块及访问认证模式实操
- 快速入门系列--WebAPI--03框架你值得拥有
- 快速入门系列--MVC--06视图
- 腾讯入局物业管理 欲改造传统服务?
- ExtJs学习笔记(4)_EditorGridPanel(可编辑的网格控件)
- ansible批量管理软件部署及剧本
- 快速入门系列--MVC--02路由
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java NIO 同步非阻塞应用实例
- Spring Boot 示例项目
- Jetty 发布web服务
- Netty 异步的、事件驱动的网络应用程序框架和工具
- Consul 服务发现和配置
- Consul 启动命令,Web UI
- Thrift 跨服务开发框架
- Java并发之BlockingQueue 阻塞队列(ArrayBlockingQueue、LinkedBlockingQueue、DelayQueue、PriorityBlockingQueue、Sy
- Java并发之CountDownLatch 多功能同步工具类
- Java并发之CyclicBarrier 可重用同步工具类
- Java并发之ScheduledExecutorService(schedule、scheduleAtFixedRate、scheduleWithFixedDelay)
- Java并发之Condition 并发同步控制
- Java并发工具类Semaphore应用实例
- Java并发之死锁实例
- Java并发之ThreadPoolExecutor 线程执行服务