私の 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
開き括弧の直前のスペースに注意してください。
これは何かの特殊文字ですか?なぜペイロードに追加されるのですか? 論理的な説明はありますか?
乾杯、エド