2017-11-16 5 views
4

私は、私たちのデータセンターのいずれかでspringを使って作られた石鹸サービスを主催しました。 SOAP UIを介してテストすると、1秒以内に応答が得られます。しかし、同じリクエストをCURL経由で実行すると、実行に30秒以上かかります。私は同じマシンから両方のコマンドを実行しています。この違いを引き起こす原因は何ですか?Soap UI vs CurlレスポンスtIme相違点

curl -H "Content-Type: text/xml; charset=utf-8" -H "SOAPAction:" -d @request.xml <endpoint> 
+0

? – randomir

+0

@randomir curlコマンドを更新しました –

+0

おそらく 'Content-Type:application/soap + xml; charset = UTF-8'。しかし、間違いなく 'SOAPAction'ヘッダーを定義するべきです。なぜなら、今は無効なので、' curl'はまったく送信しないからです。 – randomir

答えて

3

考慮すべきいくつかのこと:

  • SOAPリクエストのメディアタイプ(Content-Typeヘッダーフィールドが)application/soap+xmlでなければなりません(SOAP 1.2 specs, end of section 1.3を参照してください)。エンコードがUTF-8の場合は、Content-Type: application/soap+xml; charset=UTF-8と設定します。

  • あなたのSOAPActionヘッダーフィールドは未定義のままです。つまり、curlはそのフィールドをまったく送信していません。 curl--trace-ascii /dev/stdoutオプションで実行すると、これを確認できます。

  • -d/--dataの代わりに--data-binaryオプションを使用して、XML(バイナリ)ペイロードをそのまま送信することができます。改行と改行を保持します。 XMLコンテンツの場合、違いはありませんが、おそらくパーサーとスキーマの厳密性に依存します。 curlリクエストをデバッグするとき

  • 、それはhttpbinのようなエコーサイトのオフ要求をバウンス、など-vvvとの完全な冗長性を可能にする、多分受信/送信された正確なペイロードを検査する--trace*を使用すると便利です。これらの修正を適用する

、あなたのcurlコマンドは次のようになります。あなたが `curl`コマンドを書くことができます

curl -H 'Content-Type: application/soap+xml; charset=UTF-8' \ 
    -H 'SOAPAction: Some-Action' \ 
    --data-binary @request.xml \ 
    <endpoint> 
+0

私は23時間後に賞金を授与することができるように見えます。明日はそれをします。 –