google / cronet-transport-for-okhttp

This package allows OkHttp and Retrofit users to use Cronet as their transport layer, benefiting from features like QUIC/HTTP3 support or connection migration.
Apache License 2.0
450 stars 34 forks source link

415 Error When Setting Content-Type Header with Request Header #40

Open madhurkapadia opened 1 month ago

madhurkapadia commented 1 month ago

Description: I'm encountering a 415 (Unsupported Media Type) error when using Cronet to send requests with a request body and an explicitly set Content-Type header

Steps to Reproduce: Create an OkHttp Request object with a non-empty RequestBody and set the "Content-Type" header to "application/json". Use the Cronet library to send the request. Observe a 415 error response from the server.

Expected Behavior: The server should accept the request with the specified Content-Type and process the JSON payload.

Actual Behavior: The server returns a 415 error, indicating that it doesn't support the provided Content-Type.

RequestResponseConverter class has

if (body.contentLength() != 0L) {
                if (okHttpRequest.header("Content-Type") == null && body.contentType() != null) {
                    builder.addHeader("Content-Type", body.contentType().toString());
                } else {
                    builder.addHeader("Content-Type", "application/octet-stream");
                }

                builder.setUploadDataProvider(this.requestBodyConverter.convertRequestBody(body, writeTimeoutMillis), this.uploadDataProviderExecutor);
            }

As the above check is incorrect and shouldn't replace Content-Type header with application/octet-stream blindly. It should respect whatever user is setting.

madhurkapadia commented 1 month ago

can see in new code it has been already fixed

madhurkapadia commented 1 month ago

Given the current issues, when are you planning to release an updated version?