0

Java Webサービス(Https)(Visual Studio 2008、.NET 2.0で作成)へのC#スタブがいくつかあります。サーバーは、リクエストをチャンク化することを許可しません。HttpWebRequestでsendChunkedをfalseに設定できました。

データがほとんどないWebサービスメソッドを呼び出すと、正常に機能します。
ただし、大量のデータを含むリクエストを送信すると、「リクエストを解析できません」というエラーが発生します。

これが2つの奇妙なことです:

  1. これは、HttpConstants.CHUNKEDをfalseに設定することで、Javaを介して正常に機能します。これを行わないと、同じ「リクエストを解析できませんエラー」で機能しなくなります。
  2. バックグラウンドでフィドラーを実行している場合、すべてが正常に機能しますか?!これは、Fiddlerがリクエストバイトを送信する前にバッファリングしていることが原因だと思います。注:「HTTPSを復号化」するFiddlerオプションをオフにすると、機能しなくなります。
4

3 に答える 3

0

ああ、古典的な「それを観察することによって行動を変える」。問題は、ご指摘のとおり、Fiddlerが大量のバッファリングなどを実行することです。1つのオプションは、HTTPSを(一時的に)オフにし、Wiresharkなどのパッシブネットワークスニッフィングツールを使用して、.NETが設定に準拠しているかどうかを確認することです。

于 2009-08-13T14:40:34.837 に答える
0

この問題を解決しました。Visual Studio で "Web 参照の追加" を使用して Web サービス メソッドにスタブを作成すると、サーバーを不満にさせていた Web 要求に何かを追加しているように見えます。XML を最初から作成し、スタブを使用せずに Web 要求を送信する独自​​のメソッドを作成しましたが、正常に動作します。こういう問題は嫌いです。

于 2009-08-14T19:22:43.720 に答える
0

あなたの説明からは、「スタブ」の意味がわかりません。Java サービスへの Web 参照を作成したということですか?

その場合、メソッドをオーバーライドして、プロパティを false に設定しGetWebRequestて独自の HttpWebRequest を返すことができます。SendChunked

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 に答える