我有一个ASP.NET的Web服务,它返回一个自定义实体对象(职员):java可以使用ASP.NET web服务返回的.NET对象吗?
[WebMethod]
public Staff GetStaffByLoginID(string loginID){}
我如何将消耗这在Java中?
谢谢!
我有一个ASP.NET的Web服务,它返回一个自定义实体对象(职员):java可以使用ASP.NET web服务返回的.NET对象吗?
[WebMethod]
public Staff GetStaffByLoginID(string loginID){}
我如何将消耗这在Java中?
谢谢!
ASP.NET自动生成一个WSDL,其中包含Web方法的接口定义以及它们使用/返回的类型。
Apache Axis提供了一个名为WSDL2Java的工具,它将生成您使用Web服务所需的所有代码。只需将它指向:
http://yoursite.com/YourWebService.asmx?WSDL
如果直接浏览到.asmx文件,你会得到一个很好的测试工具,您可以使用探索,你可以调用的各种方法。
一旦Axis读取您的WSDL,它将生成一些代理类,其中一个将基于Staff的接口。
但是,我不会将此类用作您的实际业务对象,而是会通过服务层包装对Web服务的访问。此服务层将使用代理人员类来填充您的真实业务对象。
这将保护您的使用代码免受将来可能发生在Web服务上的任何接口更改,从而保持尽可能小的代码实际区域。
我这样做是为了谋生,在许多平台上使用SOAP在Java和.NET之间进行互操作。
编辑:为什么这是downvoted?这是这里唯一正确的答案。
如果您使用的是传统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编写一些自定义类映射器。
您可以通过在IKVM上运行Java来做到这一点。
这就是WSDL的用途。 – FlySwat 2009-05-05 02:46:40
他可以使用http://xstream.codehaus.org/进行xml序列化,并简单地构建REST服务。 – 2009-05-05 02:49:59
你知道一个WSDL是通过网络传递的对象的接口,并且他已经在堆栈的两边都有一个完美的SOAP解决方案吗? – FlySwat 2009-05-05 02:53:58