0

我必须与运行在 Axis 1.2 上的 Web 服务进行通信(使用 .NET)。使用两个 .NET 工具和 WSDL 我创建了 C# 代理,但是我遇到了以下问题:

1) WSDL.exe 创建了一个缺少方法输入参数的代理。例如,如果应该有这样的方法:

AReturnType AMethod(AnInputType);

创建的代理有这样的方法:

void AMethod();

2) 我读过建议使用 SVCUTIL.exe 而不是 WSDL.exe。所以我用 SVCUTIL 创建了代理,但是遇到了臭名昭著的 NULL 返回对象的问题。不幸的是,我找不到任何合适的解决方案。

所以我愿意手动进行设置。这是我所拥有的:

  • SoapUI 很好地解析了 WSDL,可以检查 SOAP/XML 请求/响应。
  • Axis WSDL2JAVA 生成正确的 Java 代码,并且运行良好
  • 使用 HttpWebRequest 发送 XML/SOAP 请求会生成正确的 XML/SOAP 响应。
  • 我尝试使用 XSD.EXE 工具生成 XSD 和 C# 对象并将 XML 响应(通过上一步获得)序列化到这些对象中。

所以你有什么建议?有没有办法以某种方式手动创建代理?或者生成的 Java 代码能以某种方式帮助我吗?

4

3 回答 3

1

以下是我正在处理的项目如何创建和使用手动代理。

这是客户端代理:

 [ServiceContract(Name = "YourServiceContract", Namespace = "http://....")]
 public interface YourServiceContract, 
  {
    [OperationContract]
    object GetObject(object searchCriteria);
   }

public class YourClient : ClientBase<YourServiceContract>, YourServiceContract
{
    public YourClient (){ }

    public YourClient (string endpointConfigurationName)
    : base(endpointConfigurationName){ }

    public object GetObject(object searchCriteria)
    {
    return base.Channel.GetObject(searchCriteria);
    }
}

这就是它的名称:

public void GetYourObject(object searchCriteria)
    {
        YourClient proxy = new YourClient();
        proxy.GetObject(searchCriteria);
        proxy.SafeClose();
    }
于 2012-09-25T15:57:27.537 回答
0

看看这个答案。将允许您直接发出 HttpRequest:-

于 2012-09-25T15:38:01.890 回答
0

有一组预定义的互操作绑定将 WCF 客户端与 Java 世界中的服务连接起来。

于 2012-09-25T15:43:47.617 回答