我正在尝试编写一个发布表单的测试,以便我可以验证响应。使用招摇,我可以看到卷曲请求:
curl -X POST --header 'Content-Type: application/x-www-form-urlencoded' --header 'Accept: application/json' -d 'listing_id=123&branch_id=123&session_id=1234&name=test%20test&email=test%2Bblacklist%40test.co.uk&phone=01111%20111111&postcode=aa1%2011a&message=Hello%20Test&sender_ip=127.0.0.1' 'http://DOMAIN/FORM/'
如何使用spring RestTemplate交换进行此操作?
我目前正在尝试:
// create request body
String input = "{\"listing_id\":\"123\",\"branch_id\":\"1234\",\"session_id\":\"bd2aa65c6604ee0eb4b5bb39433f1257\",\"name\":\"Test test\",\"email\":\"me@you.com\",\"phone\":\"01111111111\",\"postcode\":\"aa111a\",\"message\":\"Test\",\"sender_ip\":\"127.0.0.1\"}";
// set headers
headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(input, headers);
response = restTestUtils.sendRequest(HttpMethod.POST, urlBuilder.getAgentFormURL(Protocol.HTTP), entity );
我回来的回复是500但是:
2017-02-06 20:30:10 INFO RestTestUtils:185 - HTTP方法:POST 2017-02-06 20:30:10 INFO RestTestUtils:186 - URL: http://DOMAIN/FORM/ 2017-02-06 20:30:10 INFO RestTestUtils:187 - HEADERS:{Content-Type = [application / json]} 2017-02-06 20:30:10 INFO RestTestUtils:188 - BODY: {&#34; listing_id&#34;:&#34; 123&#34;&#34; branch_id&#34;:&#34; 1234&#34;&#34; SESSION_ID&#34;:&#34; bd2aa65c6604ee0eb4b5bb39433f1257&#34;&#34;名称&#34;:&#34;试验 测试&#34;&#34;电子邮件&#34;:&#34; me@you.com",&#34;电话&#34;:&#34; 01111111111&#34;&#34;&邮政编码#34;:&#34; a1111a&#34;&#34;消息&#34;:&#34;试验&#34;&#34; sender_ip&#34;:&#34; 127.0.0.1&#34 ;}
2017-02-06 20:30:10 INFO APIStepDefinations:192 - ContactForm {&#34;错误&#34;:{&#34;状态&#34;:&#34; 500&#34;,&#34;消息&#34;:&#34;无法使用未定义 值作为HASH参考 /usr/local/share/perl5/Internal/Controller/Lead/Form/Listing.pm line 86. \ n&#34;,&#34;代码&#34;:&#34; internal_server_error&#34;}} 2017-02-06 20:30:10 INFO APIStepDefinations:140 - actualStatusCode:500 expectedHTTPStatusCode:200
该错误响应是API的回复,因此我明显提出了错误的请求。使用Spring的正确方法是什么?我认为这可能与名称没有像curl版本那样编码一样,但是如果我编码它,响应说它验证失败,因为它认为我输入的名称不是两个。