Comments (4)
Yes, this is the correct behavior, RFC3986 doesn't require encoding /
in the query, as the path is finished by the first occurence of ?
(see seciton 3.4)
If you do want to add a parameter with /
encoded, you can add a KeyValue(k, v, QueryFragmentEncoding.All)
query fragment using the uri.queryFragment
method. See https://github.com/softwaremill/sttp/blob/master/core/src/main/scala/com/softwaremill/sttp/Uri.scala#L136-L145 for the full logic
As for de-coding the java.net.URI
, that's also correct, as all components are stored in the Uri
instance in an un-encoded form, hence they are being URL-decoded when decomposing the java.net.URI
.
from sttp.
thanks, that all makes sense.
The workaround you give almost works, except that the java URI encoder encodes spaces with +, and the (admittedly horrible) 3rd party api I'm trying to hit doesn't like those.
from sttp.
Hmm I don't think it's currently possible to encode space in query other than +
. A possible work around would be to add QueryFragmentEncoding.None
and then you could do:
uri"http://notahost.com".queryFragment(QueryFragment.KeyValue("query", "a%20b", valueEncoding = QueryFragmentEncoding.None))
what do you think?
from sttp.
Fixed in 2.0.0-M6: URI encoding is fully configurable
from sttp.
Related Issues (20)
- CatsMonadAsyncError shouldn't use eval for blocking HOT 1
- Add an option of automatic pings and pongs to web sockets in HtttpClient backends
- Add support for play-json 3 HOT 1
- Update to Prometheus 1.x.x HOT 3
- [BUG] HEAD request times out using Http4s backend HOT 2
- Http proxy problem with async-http-client-backend-zio:3.9.1
- Uri interpolation incorrectly percent-encodes some characters HOT 2
- where is basicRequest? HOT 1
- AbstractFetchBackend does not support manual cancellation/interruption
- Expose AsyncHttpClient when creating AsyncHttpClientBackend HOT 2
- Preserve request-metadata in SttpBackendStub HOT 2
- is `null` valid header field value? HOT 5
- Integrate oauth? HOT 16
- add support Tethys json HOT 2
- Add Scala 3 support for play-json HOT 4
- quickRequest: Unexpected behaviour dependent on method order HOT 4
- Refactor metrics names according to standards
- Metrics caching rework
- No json4s release for scala 3 HOT 4
- Add Ox integration: SSE & WebSockets? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sttp.