我正在尝试使用单个键名发送以下参数(具有多个值的相同名称)。同样在我的标头中,我有headers.put(“ Content-Type”,“ application / x-www-form-urlencoded”);属性。
requestData.put("scope", "openid&scope=profile&scope=email");
但是在服务器端,该字符串以如下编码格式接收:
scope=openid%26scope%3Dprofile%26scope%3Demail
我希望服务器以scope = openid&scope = profile&scope = email的形式接收我的参数。
请求功能:
@Override
public void getParams(Map<String, String> requestData) {
requestData.put("scope", "openid&scope=profile&scope=email");
}
@Override
public void getParams(Map<String, String> requestData) {
requestData.put("scope", "openid&scope=profile&scope=email");
}
几乎可以肯定,java.util.Map
不是您要在此处使用的数据结构。给定Map的url编码应该起作用的方式,并且您无法观察到的行为是正确的,并且您无法通过在getParams
方法中执行任何巧妙的操作来击败它。
您想要的像是Multiset
或带有一些巧妙的URI序列化代码的Map<String,List<String>
。
@Override
批注的存在是一个不好的信号-这表明您可能会被束缚于不支持所需用例的API。您可能需要拆除许多现有代码,以扩展您的解决方案以涵盖这种情况。