【问题标题】:Invoking .Net WebService from Java从 Java 调用 .Net WebService
【发布时间】:2010-08-06 11:48:24
【问题描述】:

我有一个.Net webService,它返回一个自定义类,我们称之为“MyClass”,就像这个例子一样使用:

[WebMethod]
public MyClass sampleMethod()
{
    return new MyClass();
}

如果从 .Net 应用程序调用时可以正常工作。

从使用 AXIS 的 Java 应用程序中,我收到错误“MyClass is referenced but not defined”。

我该如何解决这个问题?

【问题讨论】:

  • 你是如何创建 Java 代理的?
  • @Richard:我正在使用 Eclipse“新 Web 服务客户端”功能创建 Java 代理。
  • 那么代理生成就坏了。我对 IntelliJ IDEA 创建的 Java 6 Web 服务客户端有很好的经验。
  • 为什么使用 Axis 而不是 JAX-WS(作为标准 Java API 的一部分)?
  • 我刚刚完成了 .Net 部分...现在正在尝试帮助某人。

标签: java .net web-services


【解决方案1】:

想到两件事:

  1. 您缺少定义MyClass 的架构
  2. 围绕MyClass 定义的命名空间问题

如果您可以发布 WSDL 和架构,人们将能够进一步帮助您

【讨论】:

    【解决方案2】:

    首先,您必须创建一个 Java 代理:这可以通过将轴指向 Web 服务 WSDL 位置来生成客户端来实现。

    您的 Web 服务可能如下所示:http(s)://server:port/path/service_def.asmx 并将 ?wsdl 添加到 wsdl 定义的末尾(即像这样 http(s)://server:port/path/service_def.asmx?wsdl)。

    从那里,生成和客户端并使用代理与您的 .NET Web 服务通信。


    PS 造成这种情况的可能原因是您的类未在命名空间中定义。检查您的 WSDL 定义并查看您的类是否有 <xsd:element />,并尝试向其中添加 ns: 并使用 Axis 生成 java 代理。

    【讨论】:

    • 您的“MyClass”被声明为WebMethod。您不能将其声明为(就像在 java 中一样,因为我不知道如何在 .NET 中执行此操作)WebServiceXmlRootElement
    • MyClass 只是一个名为“sampleMethod”的 Web 方法返回的类。
    猜你喜欢
    • 1970-01-01
    • 2014-04-16
    • 2016-02-13
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多