SPR-5536: RestTemplate does not do HTTP GET if it should

This commit is contained in:
Arjen Poutsma
2009-03-03 09:32:05 +00:00
parent 6631092870
commit b08ad44230
4 changed files with 74 additions and 16 deletions

View File

@@ -28,8 +28,6 @@ import org.apache.commons.httpclient.methods.RequestEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.client.AbstractClientHttpRequest;
import org.springframework.http.client.ClientHttpResponse;
/**
* {@link org.springframework.http.client.ClientHttpRequest} implementation that uses
@@ -48,7 +46,7 @@ final class CommonsClientHttpRequest extends AbstractClientHttpRequest {
private final HttpMethodBase httpMethod;
public CommonsClientHttpRequest(HttpClient httpClient, HttpMethodBase httpMethod) {
CommonsClientHttpRequest(HttpClient httpClient, HttpMethodBase httpMethod) {
this.httpClient = httpClient;
this.httpMethod = httpMethod;
}

View File

@@ -21,9 +21,9 @@ import java.net.HttpURLConnection;
import java.util.List;
import java.util.Map;
import org.springframework.util.FileCopyUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.util.FileCopyUtils;
/**
* {@link ClientHttpRequest} implementation that uses standard J2SE facilities to execute requests.
@@ -38,7 +38,7 @@ final class SimpleClientHttpRequest extends AbstractClientHttpRequest {
private final HttpURLConnection connection;
public SimpleClientHttpRequest(HttpURLConnection connection) {
SimpleClientHttpRequest(HttpURLConnection connection) {
this.connection = connection;
}
@@ -56,7 +56,9 @@ final class SimpleClientHttpRequest extends AbstractClientHttpRequest {
}
}
this.connection.connect();
FileCopyUtils.copy(bufferedOutput, this.connection.getOutputStream());
if (bufferedOutput.length > 0) {
FileCopyUtils.copy(bufferedOutput, this.connection.getOutputStream());
}
return new SimpleClientHttpResponse(this.connection);
}

View File

@@ -21,8 +21,8 @@ import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URLConnection;
import org.springframework.util.Assert;
import org.springframework.http.HttpMethod;
import org.springframework.util.Assert;
/**
* {@link ClientHttpRequestFactory} implementation that uses standard J2SE facilities.
@@ -51,7 +51,11 @@ public class SimpleClientHttpRequestFactory implements ClientHttpRequestFactory
*/
protected void prepareConnection(HttpURLConnection connection, String httpMethod) throws IOException {
connection.setDoInput(true);
connection.setDoOutput(true);
if ("PUT".equals(httpMethod) || "POST".equals(httpMethod)) {
connection.setDoOutput(true);
} else {
connection.setDoOutput(false);
}
connection.setRequestMethod(httpMethod);
}