我正在使用ning Async HTTP客户端,它以下列URL格式向下游服务器发送请求:
http://{downstream-server}:4080/object/id?query_parameters=a1,a2
请注意查询参数中的,
。我的问题是HTTP客户端似乎在执行请求之前编码查询参数,如下所示:
query_parameters=a1%2Ca2
我知道这一点,因为下游服务器抛出以下异常:
Invalid query parameter value: a1%2Ca2. Can be a1 or a2
由于某种原因,下游服务器不解码查询参数。在客户端执行请求之前,我在request.getQueryParameters()
中检查查询参数的值,并且它仍然是query_parameters : a1,a2
。
我可以让HTTP客户端不对查询参数进行编码吗?
答案 0 :(得分:1)
尝试
setUseRawUrl(true)
配置客户端时,如下所示:
new AsyncHttpClient(new AsyncHttpClientConfig.Builder()
.setUseRawUrl(true)
.build()
)
这应该保持URL不受影响。