私は ac# の「クライアント」と Java の「サーバー」を持っています。Java サーバーには、クライアントに提供する wsdl があります。これまでのところ、c# がサーバーに SOAP アクションを実行するように要求することは機能します。私のサーバーは、soap リクエストを取得してメソッドを実行し、結果をクライアントに返そうとします。
ただし、C# に応答を送信すると、「サーバーがプロトコル違反をコミットしました。Section=ResponseStatusLine」が表示されます。
私はこれを修正するために一日中費やしましたが、うまくいくものは何も思いつきませんでした. 私が何をしたかを説明すると、この記事は非常に長くなってしまうので、簡単に説明します。
私は何時間もグーグルで検索しましたが、すべてが私の「応答行」が正しいことを示しています。Skypeをシャットダウンしたり、応答ラインを再配置したり、何かを追加したり、削除したりなどを試みましたが、すべて役に立ちませんでした。
これはクラスの課題のためなので、API を使用して支援することはできません。サーバー側ですべてを手動で行う必要があります。つまり、手動で解析し、soap 応答と http 応答を手動で作成します。私のためにそれを行うものを使うと言う前に、それを知りたいと思っただけです.
サーバーが返すものを確認できるように、c# クライアントを「模倣」した Java クライアントを作成して、サーバーが正しいヘッダーを送信していることを確認することさえ試みました。ただし、送信するように言ったものを正確に返しています。
Javaクライアントに同じことをするように指示しようとしましたが、実際に実行されているC#サービスに対して、実際のサービスが返すものを確認しましたが、基本的に同じことが返されました。安全のために、応答をコピーしてC#クライアントに送信しようとしましたが、それでもエラーがスローされました。
誰でも助けることができますか?アプリの構成に useUnsafeHeaderParsing を追加するなど、考えられることはすべて試しました。しかし、何も機能していません。実際のサービスが送信するものとまったく同じものを送信すると、怒鳴られます。私が欲しいものを送ると、それは叫びます。
私はこれを送ります:
"200 OK HTTP/1.0\r\n" +
"Content-Length: 201\r\n" +
"Cache-Control: private\r\n" +
"Content-Type: text/xml; charset=utf-8\r\n\r\n";