示例#1
0
  @Test
  public void testOverwriteContentTypeHeader() {
    HttpMessageSender messageSender = new HttpMessageSender();
    String requestUrl = "http://localhost:8088/test";

    final String responseBody = "<TestResponse><Message>Hello World!</Message></TestResponse>";

    messageSender.setReplyMessageHandler(replyMessageHandler);

    messageSender.setRequestMethod(HttpMethod.POST);
    messageSender.setRequestUrl(requestUrl);
    messageSender.setContentType("text/xml");
    messageSender.setCharset("ISO-8859-1");

    Message<?> requestMessage =
        MessageBuilder.withPayload("<TestRequest><Message>Hello World!</Message></TestRequest>")
            .setHeader("Content-Type", "application/xml;charset=UTF-8")
            .setHeader("Accept", "application/xml")
            .build();

    messageSender.setRestTemplate(restTemplate);

    reset(restTemplate, replyMessageHandler);

    restTemplate.setErrorHandler(anyObject(ResponseErrorHandler.class));
    expectLastCall().once();

    expect(
            restTemplate.exchange(
                eq(requestUrl), eq(HttpMethod.POST), anyObject(HttpEntity.class), eq(String.class)))
        .andAnswer(
            new IAnswer<ResponseEntity<String>>() {
              public ResponseEntity<String> answer() throws Throwable {
                HttpEntity<?> httpRequest = (HttpEntity<?>) getCurrentArguments()[2];

                Assert.assertEquals(
                    httpRequest.getBody().toString(),
                    "<TestRequest><Message>Hello World!</Message></TestRequest>");
                Assert.assertEquals(httpRequest.getHeaders().size(), 2);

                Assert.assertEquals(
                    httpRequest.getHeaders().getContentType().toString(),
                    "application/xml;charset=UTF-8");
                Assert.assertEquals(
                    httpRequest.getHeaders().getAccept().get(0).toString(), "application/xml");

                return new ResponseEntity<String>(responseBody, HttpStatus.OK);
              }
            })
        .once();

    replyMessageHandler.onReplyMessage(anyObject(Message.class));
    expectLastCall().once();

    replay(restTemplate, replyMessageHandler);

    messageSender.send(requestMessage);

    verify(restTemplate, replyMessageHandler);
  }