2017-04-14 52 views
0

My 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 

請注意前面的空格直接放在左括號之前。

這是一些特殊字符嗎?它爲什麼被添加到有效載荷中?有沒有合理的解釋?

乾杯, 埃德

回答