我们正在使用 REST 接口管理 CQ5 组。要添加一个用户,我们做
POST http://$host:$port/home/groups/t/test_group.rw.html
Content-Type: application/x-www-form-urlencoded
addMembers:my_principal_name
只要名称仅包含 ASCII 字符,它就可以按预期工作。
我们尝试使用 latin 1 (ISO-8859-1)。例如对于主体名称ü
:
POST http://$host:$port/home/groups/t/test_group.rw.html
Content-Type: application/x-www-form-urlencoded
addMembers:%FC
在这种情况下,不会生成错误,但不会添加主体。
我们的解决方法是使用 UTF-8 并对其进行两次URL 编码。ü
是C3BC
,URL 编码的它变成%C3%BC
并再次编码%25C3%25BC
总结一下,要添加成员ü
,我们必须提交
POST http://$host:$port/home/groups/t/test_group.rw.html
Content-Type: application/x-www-form-urlencoded
addMembers:%25C3%25BC
按预期工作。
这是一个错误还是 API 真的需要发送 UTF-8 编码的字符串 URL 编码两次?
编辑我尝试使用附加_charset_
参数
telnet ******** 8000
Trying ********...
Connected to ********.
Escape character is '^]'.
POST /home/groups/nethz/lz/06065.rw.html HTTP/1.1
Host: *********:8000
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Authorization: Basic ****************=
_charset_=UTF-8&addMembers=aaaa_testgr%C3%BCppli
HTTP/1.1 200 OK
Connection: Keep-Alive
Server: Day-Servlet-Engine/4.1.44
Content-Type: text/html;charset=UTF-8
Date: Fri, 04 Oct 2013 10:50:19 GMT
Transfer-Encoding: chunked
4f6
<html>
<head>
<title>Content modified /home/groups/nethz/lz/06065</title>
</head>
<body>
<h1>Content modified /home/groups/nethz/lz/06065</h1>
<table>
<tbody>
<tr>
<td>Status</td>
<td><div id="Status">200</div></td>
</tr>
<tr>
<td>Message</td>
<td><div id="Message">OK</div></td>
</tr>
<tr>
<td>Location</td>
<td><a href="" id="Location"></a></td>
</tr>
<tr>
<td>Parent Location</td>
<td><a href="" id="ParentLocation"></a></td>
</tr>
<tr>
<td>Path</td>
<td><div id="Path">/home/groups/nethz/lz/06065</div></td>
</tr>
<tr>
<td>Referer</td>
<td><a href="" id="Referer"></a></td>
</tr>
<tr>
<td>ChangeLog</td>
<td><div id="ChangeLog"><pre></pre></div></td>
</tr>
</tbody>
</table>
<p><a href="">Go Back</a></p>
<p><a href="">Modified Resource</a></p>
<p><a href="">Parent of Modified Resource</a></p>
</body>
</html>
0
Connection closed by foreign host.
我们得到状态 200 的答案,但子组aaaa_testgrüppli
( aaa_testgr%C3%BCppli
) 未插入/home/groups/nethz/lz/06065