java可以使用ASP.NET Web服务返回的.NET对象吗?

时间:2009-05-05 02:37:44

标签: java asp.net web-services

我有一个ASP.NET Web服务,它返回一个自定义实体对象(Staff):

[WebMethod]
public Staff GetStaffByLoginID(string loginID){}

我将如何在Java中使用它?

谢谢!

3 个答案:

答案 0 :(得分:5)

ASP.NET自动生成一个WSDL,其中包含Web方法的接口定义及其使用/返回的类型。

Apache Axis提供了一个名为WSDL2Java的工具,它将生成使用Web服务所需的所有代码。只需指出:

http://yoursite.com/YourWebService.asmx?WSDL

如果您直接浏览.ASMX文件,您将获得一个很好的测试工具,可以用来探索您可以调用的各种方法。

一旦Axis读取您的WSDL,它将生成一些代理类,其中一个将基于Staff的接口。

但是,我不会将此类用作您的实际业务对象,而是通过服务层包装对Web服务的访问。此服务层将使用代理Staff类来填充您的真实业务对象。

这可以保护您的消费代码免受将来可能发生在Web服务上的任何界面更改,从而使实际修改的代码区域尽可能小。

我这样做是为了生活,在许多平台上使用SOAP在Java和.NET之间进行交互。

编辑:为什么这个被贬低?这是唯一正确答案。

答案 1 :(得分:0)

如果您使用传统的asmx Web服务,请使用flyswat提到的标准WSDL。

其他解决方案,如果不使用标准ASP.NET Web服务:

使用REST

http://www.infoq.com/articles/REST-INTEROP

http://www.codeproject.com/KB/XML/WSfromJava.aspx

确保对象是可序列化的,只要您可以将它转换为Java端的类似类,就可以了。否则,您可能必须用Java编写一些自定义类映射器。

答案 2 :(得分:-1)

您可以通过在IKVM上运行Java来实现此目的。