diff --git a/openai-java-core/src/main/kotlin/com/openai/core/http/HttpRequest.kt b/openai-java-core/src/main/kotlin/com/openai/core/http/HttpRequest.kt index 7dfa41d18..64acef3f6 100644 --- a/openai-java-core/src/main/kotlin/com/openai/core/http/HttpRequest.kt +++ b/openai-java-core/src/main/kotlin/com/openai/core/http/HttpRequest.kt @@ -21,7 +21,7 @@ private constructor( if (!endsWith("/")) { append("/") } - append(URLEncoder.encode(segment, "UTF-8")) + append(URLEncoder.encode(segment, "UTF-8").replace("+", "%20")) } if (queryParams.isEmpty()) { diff --git a/openai-java-core/src/test/kotlin/com/openai/core/http/HttpRequestTest.kt b/openai-java-core/src/test/kotlin/com/openai/core/http/HttpRequestTest.kt index 7a0fa54ce..e450ab15a 100644 --- a/openai-java-core/src/test/kotlin/com/openai/core/http/HttpRequestTest.kt +++ b/openai-java-core/src/test/kotlin/com/openai/core/http/HttpRequestTest.kt @@ -34,13 +34,21 @@ internal class HttpRequestTest { .build(), expectedUrl = "https://api.example.com/users/123/profile", ), - PATH_SEGMENT_WITH_SPECIAL_CHARS( + PATH_SEGMENT_WITH_SPACE( HttpRequest.builder() .method(HttpMethod.GET) .baseUrl("https://api.example.com") .addPathSegment("user name") .build(), - expectedUrl = "https://api.example.com/user+name", + expectedUrl = "https://api.example.com/user%20name", + ), + PATH_SEGMENT_WITH_LITERAL_PLUS( + HttpRequest.builder() + .method(HttpMethod.GET) + .baseUrl("https://api.example.com") + .addPathSegment("a+b") + .build(), + expectedUrl = "https://api.example.com/a%2Bb", ), SINGLE_QUERY_PARAM( HttpRequest.builder()