googleapis / googleapis/google-http-java-client
Apache HTTP client does not support GET requests with content
- Ngôn ngữ chính
- Java
- Star
- 1.4k
- Fork
- 473
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
I'm trying to update a resource with `google-cloud-compute-1.3.0`, the client does this using `HTTP PATCH`. This is not supported with the default `NetHttpTransport` (#1316): https://github.com/googleapis/google-http-java-client/blob/7ebc6ca7807424b6372f1b52ac7b129752a9acf5/google-http-client/src/main/java/com/google/api/client/http/javanet/NetHttpTransport.java#L68-L76
To workaround that, I set the HTTP transport to `ApacheHttpTransport`, but then other requests fail with
```
Caused by: java.lang.IllegalStateException: Apache HTTP client does not support GET requests with content.
at com.google.common.base.Preconditions.checkState(Preconditions.java:469)
at com.google.api.client.util.Preconditions.checkState(Preconditions.java:113)
at com.google.api.client.http.apache.v2.ApacheHttpRequest.execute(ApacheHttpRequest.java:60)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1012)
at com.google.api.gax.httpjson.HttpRequestRunnable.run(HttpRequestRunnable.java:143)
... 6 more
```
This precondition is run when `getContentStreaming() != null`: https://github.com/googleapis/google-http-java-client/blob/7ebc6ca7807424b6372f1b52ac7b129752a9acf5/google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/ApacheHttpRequest.java#L59-L71
but in this case `getContentStreaming()` is returning an `com.google.api.client.http.EmptyContet` due to https://github.com/googleapis/gax-java/pull/648
I think this precondition needs to be relaxed and be in-line with `NetHttpTransport`, which does support `GET` requests with non-null `getContentStreaming()`.
#### Environment details
1. Specify the API at the beginning of the title. For example, "BigQuery: ...").
`google-cloud-compute-1.3.0`
2. OS type and version: RHEL 8.3
3. Java version: 11.0.10
4. google-http-client version(s): 1.39.2
#### Code example
```java
TransportChannelProvider transportChannelProvider = InstantiatingHttpJsonChannelProvider.newBuilder().setHttpTransport(new ApacheHttpTransport()).build();
ImagesSettings settings = ImagesSettings.newBuilder().setTransportChannelProvider(transportChannelProvider).build();
try (ImagesClient client = ImagesClient.create(settings)) {
client.list("centos-cloud");
}
```
Will fail with the stacktrace above. Removing either `.setTransportChannelProvider()` or `.setHttpTransport()` (so that it defaults to `NetHttpTransport`) will fix this issue (but then PATCH doesn't work).
Hướng dẫn đóng góp
Đánh giá
Issue này chưa được đánh giá.