C# 服务客户端 - 传输编码:分块



我目前正在尝试用 C# 修复我的 SOAP-Client,但不知何故卡在了传输编码上。我或多或少是 C# 的新手,所以我完全有可能只是在这里错过了一些小东西。

我从我们的本地Tomcat服务器使用了SOAP服务,如下所示:https://web.archive.org/web/20180506023052/http://www.csharptutorial.in/37/csharp-net-how-to-consume-a-web-service-in-csharp-net-visual-studio-2010

我当前的代码:

using System;
using ConsoleApp1.Lims;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
LimsZugriffService client = new LimsZugriffService();
// FunktionsErgebnis response = client.connect();
// Console.WriteLine("Connect" + response.meldung);
String[] bond = new String[] { "versuch.auftrag.nr=2014/0031" };
String[] bondFail = new String[] { "abc" };
VersuchsschrittErgebnis reponseVersuch = client.ermittleVersuchsschritte(bond);
Console.WriteLine(reponseVersuch.ermittelteVersuchsschritte.Length);
Console.WriteLine(reponseVersuch.meldung);
}
}
}

经过一些测试,我发现有些东西没有按预期工作。我的<ermittelteVersuchsschritte>响应数组似乎是空的,而"控制"标志正常解析。

我捕获了客户端和服务器之间的流量以找出问题所在,它实际上完全存在。刚刚分成 8192 字节块。

难道是WebClient的C#实现在Transfer-Encoding: Chunked上遇到了一些问题吗?

谷歌搜索了几个小时后,我找不到令人满意的解决这个问题的解决方案。我希望有人,谁比我更了解C#和WebServices,有答案。

为了完整起见:

我的 WSDL

我的流量 - 请求>响应

经过一些研究,反复试验和大量时间,我终于发现了我的错误。

C#似乎Transfer-Encoding: Chunked没有问题

错误出在服务方面。消耗的wsdl是在Axis的帮助下从 java 代码生成的(第一个Axis不是Axis2)。轴生成了一个wsdl 1.0,而 C# 似乎期望wsdl 2.0。因此,最终,wsdl中描述的XML结构存在缺陷,无法自动使用。

我们通过从Axis切换到Apache CXF来解决此问题。新生成的wsdl在我们的 C# 客户端使用起来没有问题。

相关内容

  • 没有找到相关文章

最新更新