我有一个ASP.NET Web服务,它返回一个自定义实体对象(Staff):
[WebMethod]
public Staff GetStaffByLoginID(string loginID){}
我将如何在Java中使用它?
谢谢!
答案 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来实现此目的。