0

私の Citrus テストは、(旅行) リクエストを REST API に送信します。応答は次のように処理されます。

http()
.client("http://localhost:18082/cases")
.send()
.post()
.accept("application/json; charset=UTF-8")
.contentType("application/json")
//.payload(new ClassPathResource("templates/travelrequest.json"));
.payload(
"{ "+
"\"definition\": \"travelrequest.xml\", "+
"\"name\": \"travelrequest\" "+
"} "
);

レスポンス コード 500 が返されますが、これは想定内です。Wireshark で次のパッケージをキャプチャしました。

Host: localhost:18082
Connection: Keep-Alive                
User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_121)
Accept-Encoding: gzip,deflate

{ "definition": "travelrequest.xml", "name": "travelrequest" } HTTP/1.1 500 Internal Server Error
Server: spray-can/1.3.3
Date: Thu, 13 Apr 2017 15:33:37 GMT

ペイロードをテンプレートに移動すると、テストの受信部分は次のようになります。

http()
.client("http://localhost:18082/cases")
.send()
.post()
.accept("application/json; charset=UTF-8")
.contentType("application/json")
.payload(new ClassPathResource("templates/travelrequest.json"));
//.payload(
//        "{ "+
//        "\"definition\": \"travelrequest.xml\", "+
//       "\"name\": \"travelrequest\" "+
//        "} "
//);

テンプレート リソースには、次のテキストが含まれています。

{
"definition": "travelrequest.xml",
"name": "travelrequest"
}

このテストを実行すると、別の応答コード 400 が返されます。Wireshark で次のパッケージをキャプチャしました。

Host: localhost:18082
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_121)
Accept-Encoding: gzip,deflate

?{
"definition": "travelrequest.xml",
"name": "travelrequest"
}HTTP/1.1 400 Bad Request
Server: spray-can/1.3.3
Date: Thu, 13 Apr 2017 15:36:15 GMT

リクエストが予期しない疑問符で始まることに注意してください。この疑問符は、Citrus の出力には表示されません。

17:36:13,629 DEBUG    client.HttpClient| Sending HTTP message to: 'http://localhost:18082/cases'
17:36:13,629 DEBUG    client.HttpClient| Message to send:
 {
"definition": "travelrequest.xml",
"name": "travelrequest"
}
17:36:13,630 DEBUG ingClientInterceptor| Sending Http request message

開き括弧の直前のスペースに注意してください。

これは何かの特殊文字ですか?なぜペイロードに追加されるのですか? 論理的な説明はありますか?

乾杯、エド

4

1 に答える 1