title: Spring RestTemplate connection reset
body: <p>I'm trying to consume a REST service with Spring facilities following <a href="https://spring.io/guides/gs/consuming-rest/" rel="noreferrer">this</a> guide but I'm having a problem with the connection.
  I want to access with GET method the REST service</p>
  
  <p><a href="http://date.jsontest.com/" rel="noreferrer">http://date.jsontest.com/</a></p>
  
  <p>I've written this piece of code to consume the service</p>
  
  <pre><code>package pack;
  import static org.junit.Assert.assertTrue;
  
  import java.util.HashMap;
  import java.util.Map;
  
  import javax.annotation.Generated;
  
  import org.junit.Test;
  import org.springframework.web.client.RestTemplate;
  
  import com.fasterxml.jackson.annotation.JsonAnyGetter;
  import com.fasterxml.jackson.annotation.JsonAnySetter;
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  
  
  public class RestUtilityTest {
  
      @JsonInclude(JsonInclude.Include.NON_NULL)
      @JsonPropertyOrder({
          "time",
          "milliseconds_since_epoch",
          "date"
      })
      public class DateTime {
  
          @JsonProperty("time")
          private String time;
          @JsonProperty("milliseconds_since_epoch")
          private Integer milliseconds_since_epoch;
          @JsonProperty("date")
          private String date;
          private Map&lt;String, Object&gt; additionalProperties = new HashMap&lt;String, Object&gt;();
  
          @JsonProperty("time")
          public String getTime() {
              return time;
          }
  
          @JsonProperty("time")
          public void setTime(String time) {
              this.time = time;
          }
  
          @JsonProperty("milliseconds_since_epoch")
          public Integer getMilliseconds_since_epoch() {
              return milliseconds_since_epoch;
          }
  
          @JsonProperty("milliseconds_since_epoch")
          public void setMilliseconds_since_epoch(Integer milliseconds_since_epoch) {
              this.milliseconds_since_epoch = milliseconds_since_epoch;
          }
  
          @JsonProperty("date")
          public String getDate() {
              return date;
          }
  
          @JsonProperty("date")
          public void setDate(String date) {
              this.date = date;
          }
  
          @JsonAnyGetter
          public Map&lt;String, Object&gt; getAdditionalProperties() {
              return this.additionalProperties;
          }
  
          @JsonAnySetter
          public void setAdditionalProperty(String name, Object value) {
              this.additionalProperties.put(name, value);
          }
  
      }
  
      @Test
      public void getTest()
      {
  
          RestTemplate restTemplate = new RestTemplate();
          DateTime datetime = restTemplate.getForObject("http://date.jsontest.com", DateTime.class);
  
          assertTrue(datetime != null);
  
      }
  
  }
  </code></pre>
  
  <p>The application throws the following exception stack</p>
  
  <pre><code>org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://date.jsontest.com": Connection reset; nested exception is java.net.SocketException: Connection reset
      at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:524)
      at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:472)
      at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:237)
      at pack.RestUtilityTest.getTest(RestUtilityTest.java:95)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
      at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
  Caused by: java.net.SocketException: Connection reset
      at java.net.SocketInputStream.read(Unknown Source)
      at java.net.SocketInputStream.read(Unknown Source)
      at java.io.BufferedInputStream.fill(Unknown Source)
      at java.io.BufferedInputStream.read1(Unknown Source)
      at java.io.BufferedInputStream.read(Unknown Source)
      at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
      at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
      at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
      at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
      at java.net.HttpURLConnection.getResponseCode(Unknown Source)
      at org.springframework.http.client.SimpleClientHttpResponse.getRawStatusCode(SimpleClientHttpResponse.java:47)
      at org.springframework.http.client.AbstractClientHttpResponse.getStatusCode(AbstractClientHttpResponse.java:32)
      at org.springframework.web.client.DefaultResponseErrorHandler.getHttpStatusCode(DefaultResponseErrorHandler.java:55)
      at org.springframework.web.client.DefaultResponseErrorHandler.hasError(DefaultResponseErrorHandler.java:49)
      at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:510)
      ... 26 more
  </code></pre>
  
  <p>I tried the REST call with two different network connections so that's not a network connection problem; moreover if I visit the service from a browser I can get the response correctly.</p>
  
  <p>What can be the problem?</p>
  
  <p>Thank you in advance</p>