0

我有一些 Java Web 服务 (Https) 的 C# 存根(在 Visual Studio 2008、.NET 2.0 中创建)。服务器不允许请求被分块。我能够在 HttpWebRequest 中将 sendChunked 设置为 false。

当我调用通过网络传输的数据很少的 Web 服务方法时,它们可以正常工作。
但是,当我发送包含大量数据的请求时,我收到“无法解析请求”错误。

这是两个奇怪的事情:

  1. 通过将 HttpConstants.CHUNKED 设置为 false,这在 Java 中可以正常工作,如果您不这样做,它会因相同的“无法解析请求错误”而中断。
  2. 如果我在后台运行提琴手一切正常?!我相信这是由于 Fiddler 在发送请求字节之前缓冲了它们。注意:如果我关闭 Fiddler 选项以“解密 HTTPS”,它将停止工作。
4

3 回答 3

0

从您的描述中我不清楚您所说的“存根”是什么意思。您的意思是您已经创建了对 Java 服务的 Web 引用吗?

如果是这样,您可以覆盖该GetWebRequest方法以返回您自己的 HttpWebRequest,并将SendChunked属性设置为 false:

public partial class Service1
{
    protected override WebRequest GetWebRequest(Uri uri)
    {
        HttpWebRequest request = (HttpWebRequest) base.GetWebRequest(uri);
        request.SendChunked = false;
        return request;
    }
}

如果这不是你要问的,那么请澄清。

于 2009-08-13T14:51:17.997 回答
0

啊,经典的“通过观察改变行为”。问题在于,正如您所指出的,Fiddler 自己做了一堆缓冲等。一种选择可能是(暂时)关闭 HTTPS,并使用像Wireshark这样的被动网络嗅探工具来查看 .NET 是否遵守您设置的设置。

于 2009-08-13T14:40:34.837 回答
0

我解决了这个问题。看起来当我在 Visual Studio 中使用“添加 Web 引用”为 Web 服务方法创建存根时,它正在向 Web 请求添加一些东西,这使服务器不满意。我编写了自己的方法,该方法从头开始创建 XML 并在不使用任何存根的情况下发送 Web 请求,并且工作正常。我讨厌这样的问题。

于 2009-08-14T19:22:43.720 回答