我试图通过以下方式从java代码调用url:
userId = "Ankur";
template = "HelloAnkur";
value= "ParamValue";
String urlString = "https://graph.facebook.com/" + userId + "/notifications?template=" +
template + "&href=processThis.jsp?param=" + value + "&access_token=abc123";
我在这方面有以下问题:
当我这么做的时候 println(urlString)
,我看到 urlString
只有在第一个和之前的值( &
). 也就是说,它看起来像: https://graph.facebook.com/Ankur/notifications?template=HelloAnkur
剩下的(应该是 &href=processThis.jsp?param=ParamValue&access_toke=123
)被切断。为什么会这样?我怎样才能得到并保持全部价值 urlString
? 做 &
需要在java字符串中转义,如果是,如何转义?
请注意,我试图在这个查询中传递一个(相对)url作为参数值( href
作为 processThis.jsp?param=ParamValue
. 如何传递这种类型的值 href
不会和这个url的查询混淆( urlString
),只有三个参数 template
, href
以及 access_token
? 也就是说,我怎样才能躲藏或逃脱 ?
以及 =
? 此外,如果 value
是 Param Value
(有空格)?
请注意 template
有价值吗 HelloAnkur
(没有空格)。但如果我想让它有空间 Hello Ankur
,我该怎么做?我应该把它写成 Hello%20Ankur
或者 Hello Ankur
可以吗?
我需要这样的解决方案 URL url = new URL(urlString)
可以创建,或者 url
可通过以下方式创建 URI
. 请描述到目前为止您的答案,因为在java中创建一个安全的url不是直截了当的。
谢谢!
1条答案
按热度按时间jmp7cifd1#
(这将成为经典)
使用uri模板(rfc 6570)。使用此实现(免责声明:我的),您可以完全避免所有编码问题:
请注意,uri模板不仅允许标量值,还允许数组(rfc调用这些“列表”--实现为
ListValue
在上面)和Map(rfc称这些“关联数组”--实现为MapValue
在上面)。