googleapis / googleapis/google-http-java-client

Apache HTTP client does not support GET requests with content

Offen
#1,442 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
type: feature request
Vorherrschende Sprache
Java
Sterne
1.4k
Forks
473
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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).

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.