URI uri = new URIBuilder()
.setScheme("https")
.setHost("1.1.1.1")
.setPath("/cgi-bin/login")
.setParameter("username", name)
.build();
...
CloseableHttpResponse response = httpclient.execute(httppost);
“名称”将是电子邮件地址。当HTTP发布时,符号@将被转换为“%40”。有什么问题?
感谢。
答案 0 :(得分:1)
我认为这是Apache HTTP客户端库的一个错误。 URI specification表示URI查询中的字符@
完全有效且不需要编码。
如果您愿意分支到另一个库,可以使用Spring Web UriComponents
和UriComponentsBuilder
。
UriComponents components = UriComponentsBuilder.newInstance()
.scheme("https")
.host("1.1.1.1")
.path("/cgi-bin/login")
.queryParam("name", "test@email.com").build();
URI uri = components.toUri();
System.out.println(uri);
打印
https://1.1.1.1/cgi-bin/login?name=test@email.com
Spring,在这里,允许URI
类在其构造函数中执行自己的编码。