如何避免 URIBuilder 将逗号编码为“%2C”或查询参数中的其他字符

Bar*_*art 8 java apache uri http urlencode

我想使用 apache 类创建一个 URI org.apache.http.client.utils.URIBuilder,并且不需要将查询参数编码为百分比编码。

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

import java.net.URI;


public class Main {
    public static void main(String[] args) throws Exception {

        RequestConfig config = RequestConfig.custom().build();

        HttpClientBuilder builder = HttpClientBuilder.create().setDefaultRequestConfig(config);

//        URI url = new URI("http://some-website.com/?range=10,20");
//        If url is created with the line above the comma "," is not encoded when sending the request
//        When you use URIBuilder the comma "," is converted to "%2C"

        URIBuilder uribuilder = new URIBuilder("http://some-website.com/");

        uribuilder.addParameter("range", "10,20");

        URI url = uribuilder.build();

        System.out.println("URL => " + url.toString());


        HttpHost targetHost = new HttpHost(url.getHost(), url.getPort(), url.getScheme());

        HttpClient client = builder.build();

        HttpRequestBase req = new HttpPost(url);


        HttpResponse httpResponse = client.execute(targetHost, req);

        HttpEntity entity = httpResponse.getEntity();

        String responseString = EntityUtils.toString(entity, "UTF-8");

        System.out.println(responseString);
        System.out.println("Finished");
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用类URIBuilder(例如我不知道的一些标志)来做到这一点?

我很感激其他建议(也许比我的代码更好的方法)来完成此任务。但我无法发送编码的查询字符串中的字符。

提前致谢。