Tag: cxf

如何在C#客户端中使用Stream而不是byte 和Java MTOM Web服务

我有一个使用CXF生成的java webservice,并启用了MTOM。 在java方面,我使用DataHandler而不是byte []来发送一个大文件。 如果我生成一个Java客户端,它工作正常,在客户端也声明DataHandler。 问题是当我尝试创建一个C#.net客户端时。 使用Visual Studio 2010生成客户端代码,它将字段声明为byte []而不是Stream。 这是一个问题,因为在客户端,它正在读取和分配所有数据以填充byte []。 看到一些MTOM和C#的例子,他们使用Strem而不是byte []。 如何生成客户端代码以在C#中使用Stream而不是byte []? 这是使用mtom的wsdl部分: 编辑:我遇到的问题是内存分配。 当用大文件读取大量记录或者用大文件读取记录时,客户端会抛出exception(由于内存分配)。 使用byte []调用web服务,客户端将所有数据加载到内存中,甚至在将结果提供给其余代码来处理它之前。 使用Stream时,我可以访问webservice的结果,并且可以将Stream的内容写入文件,而无需加载到内存中,从而避免内存不足问题。

用于CXF Web服务的.NET客户端身份validation和SOAP凭据标头

情景 我必须使用.NET客户端访问Web服务。 该服务是Apache CXF Web服务。 需要用户名和密码validation。 我创建了代理。 我已经设置了凭证。 MyServiceReference proxy = new MyServiceReference(); proxy.Credentials = new NetworkCredential(“username”, “password”); string res = proxy.Method1(); 当我运行客户端时,抛出以下exception: System.Web.Services.Protocols.SoapHeaderException: An error was discovered processing the header 服务发布者告诉我,SOAP头中没有凭据。 所以,我猜IWebProxy.Credentials不是设置身份validation的正确方法。 题 那么,我如何设置身份validation所需的SOAP头?