Apache HTTP client does not support GET requests with content
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- java
- Área
- backend-api-design, networking
Línea de trabajo
Comienza con google-http-client-apache-v2/src/main/java/com/google/api/client/http/apache/v2/ApacheHttpRequest.java en la precondición mencionada en el informe y, después, compara el manejo de GET en NetHttpTransport.java. Reproduce el ejemplo proporcionado de ImagesClient con ApacheHttpTransport y verifica que el manejo del contenido de GET ya no falle, mientras PATCH sigue siendo compatible.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Specify the API at the beginning of the title. For example, "BigQuery: ...").
google-cloud-compute-1.3.0 - OS type and version: RHEL 8.3
- Java version: 11.0.10
- google-http-client version(s): 1.39.2
Code example
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).
- Lenguaje dominante
- Java
- Estrellas
- 1.4k
- Forks
- 476
- Merge medio
- 10 h 47 min
- PR fusionados (30 d)
- 3
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de googleapis/google-http-java-client
-
Core: Validate header names and values to prevent CRLF injectionPosiblemente ocupada @insaf021 la tomó hace 106 días. Abiertopriority: p3
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Core: XmlPullParser processes external DTD entities (XXE) — disable FEATURE_PROCESS_DOCDECL in Xml#createParser()Posiblemente ocupada @insaf021 la tomó hace 106 días. Abiertopriority: p3
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
Core: LowLevelHttpResponse not disconnected when HttpResponse construction throws RuntimeExceptionPosiblemente ocupada @insaf021 la tomó hace 106 días. Abiertopriority: p3
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
type: cleanup
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
org.apache.http.conn.ssl.SSLSocketFactory is deprecatedQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertopriority: p2 type: cleanup
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Todos los issues de googleapis/google-http-java-client
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
-
Dificultad 2/5 Menos de una hora Aptitud para principiantes 84/100
cpp-best-practices/project_validator#251 ·
Los mantenedores suelen responder en 1 día
-
backend enhancement
Dificultad 2/5 Medio día Aptitud para principiantes 70/100
damodharg6/payledger#16 ·
-
[Bug]: An initiative list with no current entry logs an error on every changePosiblemente ocupada @dwizard0 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día