Java与.NET的WebServices相互调用
一:简介
本文介绍了Java与.NET开发的Web Services相互调用的技术。本文包括两个部分,第一部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用Java做客户端调用.NET开发的Web Services。
二:项目需要的工具
WindowsXP Professial(IIS)
1.生成一个Java Web Services
使用Eclipse生成一个Web Services是非常简单的。新建一个Web工程,右键建立一个Class,名为HelloClient.java。代码如下:
public class HelloClient
{
public String getName(String name)
{
return "Hello,"+name;
}
}
右键此文件选择"WebServices"-->"Create Web Service"即可部署为本机的一个ws。在IE浏览器中输入http://localhost:8008/testWebService/services/HelloClient可以看到已经部署了的HelloClient服务。输入http://localhost:8008/testWebService/services/HelloClient?wsdl这个服务的描述文件。
新建一个项目(WinForm,ASP.net都可以),我在这里使用的是一个Asp.Net项目。在起始页面上放置一个文本输入框用来输入,一个标签用来显示调用Web Services的结果,放置一个按钮,用来单击调用Web Services。然后,选择添加Web 引用,URL一栏里填入http://localhost:8008/testWebService/services/HelloClient?wsdl,Web 引用的名称输入JavaWebService,单击添加引用按钮就可以了。此时,我们可以在VS.net 的Solution Explore中看到这个Web 引用。
添加代码如下:
protected System.Web.UI.WebControls.TextBox txtName;
protected System.Web.UI.WebControls.Button btnSend;
protected System.Web.UI.WebControls.Label lblMsg;
private JavaWebService.HelloClientService ws;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
ws=new testWebService.JavaWebService.HelloClientService();
}
private void btnSend_Click(object sender, System.EventArgs e)
{
lblMsg.Text=ws.getName(txtName.Text);
}
这样,一个.NET客户端就完成了,测试一下,工作正常,OK.
四:用Java做客户端调用.NET写的 Web Services
1. 用VS.NET新建一个Asp Web Services工程,添加一个web 服务,命名为Service1.asmx。新增一个web method,代码如下:
//指定SoapAction
[SoapRpcMethod(Action="http://www.zjh.com/Rpc",RequestNamespace="http://www.zjh.com/SU",ResponseNamespace="http://www.zjh.com/SU")]
[WebMethod]
public string getName(string name)
{
return "Hello"+name;
}
然后运行它,并利用IE进行测试成功。
2. 打开Eclipse,新建一个Web项目,添加一个JSP页面 ,命名为action_hello.jsp,输入下列代码:
<%@page pageEncoding="GBK" contentType="text/html; charset=GBK" %>
<%@page import="org.apache.axis.client.Call"%>
<%@page import="org.apache.axis.client.Service"%>
<%@page import="javax.xml.namespace.QName"%>
java 代码
<%
request.setCharacterEncoding("GBK");
String name=request.getParameter("name");
String endpoint="http://localhost/HelloClient/Service1.asmx";
Service service = new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("http://www.zjh.com/SU","getName"));
call.addParameter("name",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://www.zjh.com/Rpc");
String res =(String)call.invoke(new Object[]{name});
out.print(res);
%>
这个要比Java调用Java写的ws来的复杂。ws和Java客户端都要设置SOAPAction,否则会有异常说 System.Web.Services.Protocols.SoapException: 服务器未能识别 HTTP 标头 SOAPAction 的值
五:总结
经过两天的试验,终于从技术上明确了通过Web Services实现.net 与 java的互通是可能的。当然有几点是需要注意的:
1. 在提供Web Services的时候,尽量使用xml schema中支持的变量类型做参数。如果使用.net 中的dataset这种类型,对于java来说解析起来将是一个灾难,当然,理论上是可以解析的。但是从效率角度来说,在Web Services与客户端交换信息的过程中,始终有一个序列化和反序列化的问题。如果使用dataset这种类型,系统还需要对它进行序列化操作,这将是一个很耗费资源的过程。而使用string类型将简单很多。
2. 如果使用了soap header等扩展功能,例如使用了微软提供的WSE技术,它们之间的相互通信需要作特殊处理。
引自:http://www.cnblogs.com/lzhdim/archive/2008/12/21/1359308.html
转载于:https://www.cnblogs.com/xcsn/p/4381128.html
Java与.NET的WebServices相互调用相关推荐
- java与js交互,相互调用传参
随着前端技术的发展与H5的广泛使用,移动端采用native+h5的方式越来越多了,对于Android来说就涉及到java与js的交互,相互调用传参等.下面就来看一下java与js交互的简单demo. ...
- c 调用 java jni_java JNI 的实现(2)-java和C/C++的相互调用.
目录 概述 从第一篇 一,java代码: 我们稍微对类做了更改,如下: 1 packagejuk.demo;2 3 public classJSay {4 //member/class field. ...
- net java互相调用_Java与.NET的WebServices相互调用
本文包括两个部分,***部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用Java做客户端调用.NET开发的Web Services. 项目需要的工具 ◆W ...
- gRPC基本使用(一)--java与go之间的相互调用
为什么80%的码农都做不了架构师?>>> gRPC是一个高性能.开源.通用的RPC框架,面向移动和HTTP/2设计.gRPC 默认使用 protocol buffers,这是 ...
- Android JNI学习(五)——Java与Native之间如何实现相互调用
本章将讲述Java与Native之间如何实现相互调用.我将围绕围绕如下三点来讲解. #mermaid-svg-qeVnGlVrLWrB5ryX .label{font-family:'trebuche ...
- JAVA与.NET的相互调用——通过Web服务实现相互调用
JAVA与.NET是现今世界竞争激烈的两大开发媒体,两者语言有很多相似的地方.而在很多大型的开发项目里面,往往需要使用两种语言进行集成开发.而很多的开发人员都会偏向于其中一种语言,在使用集成开发的时候 ...
- .Net 与 Java 的服务接口相互调用
本文介绍.Net 与 Java 相互调用的例子.下面的介绍主要包括三方面:一是通过常用Web服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remote实现远程对象相互调用. 首先说 ...
- Java与.NET 的Web Services相互调用
一:简介 本文介绍了Java与.NET开发的Web Services相互调用的技术.本文包括两个部分,第一部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用 ...
- jni c java互相调用_通过JNI实现Java和C++的相互调用
评论 # re: 通过JNI实现Java和C++的相互调用 2008-07-29 14:14 Always BaNg. 不错,把字符转换也一并讲了吧,比如UTF-8的处理,USC-2与MBCS转换等. ...
最新文章
- 230:Borrowers
- 【DP、线段树优化】琪露诺
- Java程序员从笨鸟到菜鸟之(二十八)Javascript总结之语言基础
- 浏览器输入域名网址访问后的过程详解
- python白名单验证是什么意思_第10.5节 使用__all__定义Python模块导入白名单
- 浅谈HTML5中canvas中的beginPath()和closePath()的重要性
- Taro+react开发(58) toHtml
- CSDN-markdown编辑器使用说明
- Android6.0指纹识别开发
- linux avi 转mp4,LINUX下有没有像格式工厂一样的媒体转换软件?比如RMVB转AVI 转MP4...
- java中extend与implement的区别
- 关于神经网络和深度学习的资料
- wps将批量数字转换成条形码_wps批量形成条码
- 奇偶数判断(YZOJ-1032)
- nexus上传jar总是读条而上传不成功的问题
- MySQL 批量插入/填充数据 - 实践
- 51单片机c语言算法大全,51单片机C语言实例(350例)Proteus仿真和代码都有
- 保姆级教程:深度学习环境配置指南!(Windows、Mac、Ubuntu全讲解)
- [小技巧] Windows 命令行显示英文
- 爬取猫眼top100数据,并保存到excel