C# 如何使用在C中使用Datahandler类型的基于Java的SOAP服务#

C# 如何使用在C中使用Datahandler类型的基于Java的SOAP服务#,c#,soap,datahandler,C#,Soap,Datahandler,我试图使用C#使用SOAP服务(Agile PLM webservice),但SOAP服务使用“Datahandler”类型,这似乎是Java特有的语言(据我所知,使用Apache Axis库) 当我尝试使用wsdl.exe工具创建代理类时,由于没有此datahandler的类型,它失败了。有人能建议如何(干净、高效地)使用此SOAP服务而不必手工编写代理类代码或手动处理C#中的SOAP消息吗?您只能通过Web服务使用由可序列化基本类型组成的类。。。否则,客户无法知道这种数据的含义。 我认为您的

我试图使用C#使用SOAP服务(Agile PLM webservice),但SOAP服务使用“Datahandler”类型,这似乎是Java特有的语言(据我所知,使用Apache Axis库)


当我尝试使用wsdl.exe工具创建代理类时,由于没有此datahandler的类型,它失败了。有人能建议如何(干净、高效地)使用此SOAP服务而不必手工编写代理类代码或手动处理C#中的SOAP消息吗?

您只能通过Web服务使用由可序列化基本类型组成的类。。。否则,客户无法知道这种数据的含义。 我认为您的datahandler包含的不仅仅是原始数据结构

您可以将datahandler中的数据包装在可服务的“视图”类中,如:

class datahandlerView
{
    string a;
    string b;
    List<MyOtherView> list;
}
类datahandlerView
{
字符串a;
b串;
名单;
}
如果列表和类型或多或少都是基本的Java类型,通常可以通过SOAP和JaxWS发送。它们必须可序列化为XML。 不要直接在您的WS端点上公开实体(如来自JPA或Hibernate的实体)——至少如果必须的话——确保所有实体关联都标记为“急切”(否则WS调用将在运行时失败)。
希望这能有所帮助。

首先,除非您一直在使用.NET 2.0,否则不应该使用WSDL.EXE。您应该使用SVCUTIL.EXE或“添加服务引用”

在任何情况下,这都不会帮助您使用这个损坏的web服务

我所看到的一些Apache服务版本有效地假设使用者也在运行Java,事实上,它已经知道这些数据类型。这只是简单的破坏,无法修复,除非由破坏的web服务的供应商修复


据我所知,Apache的较新版本通过在WSDL中包含这些类型的定义来解决这些问题。

出于这个原因,在.net中使用许多“企业”Java web服务是一种痛苦、痛苦的经历。同样,Apache人的愚蠢。我希望它现在已经被修复,在这种情况下OP只需要升级。这是一个全新的敏捷PLM安装。不幸的是,我不确定正在使用什么版本的服务器等。我认为在任何情况下,他们的SOAP服务仍然会使用“datahandler”类型,这是.Net无法识别的。事实上,它是.Net并不重要。他们需要描述他们想要为dataHandler type发送的XML。顺便问一下,您使用的是哪种版本的服务器端软件?特别是,您使用的是哪种Apache和JaxWS版本?是的,这正是问题所在-我不知道该数据类型中包含什么,也无法更改提供该数据类型的服务。这是来自敏捷PLM的“开箱即用”SOAP服务。也许如果我可以打电话给SOAP服务,我可以看看它通过Wireshark或其他什么发送回什么。。。