Resty - 带有|的IllegalArgumentException URL中的字符

时间:2015-09-02 09:35:18

标签: java api rest url

我使用Resty客户端来处理Facebook REST API。问题是我想用“|” Facebook令牌中的字符,就像在doc:

中一样
https://graph.facebook.com/800309809778160/permissions?access_token=861093975893683|t5r-lFvnrsEQ_xTtUsdMuiEdFdsdE

当我将此网址粘贴到浏览器时 - 工作正常。但是当我使用Resty(新的Resty()。text(url))执行它时会抛出异常:

Exception in thread "main" java.lang.IllegalArgumentException: Illegal character in query at index 83: https://graph.facebook.com/800309809778160/permissions?access_token=861093975893683|t5r-lFvnrsEQ_xTtUsdMuiEdFdsdE
    at java.net.URI.create(URI.java:852)
    at us.monoid.web.Resty.text(Resty.java:271)

我想知道是否应该使用其他REST客户端(如HTTPUrlConnection或Rapa),或者原因是在其他地方。

3 个答案:

答案 0 :(得分:2)

您需要在网址中对特殊字符进行编码,例如“&” ,“?”及其编码值

  

而不是“|”在URL中传递“%7C”

检查http://www.w3schools.com/tags/ref_urlencode.asp

处字符编码值的完整列表

答案 1 :(得分:1)

你需要逃避|带有%7C的网址中的字符

https://graph.facebook.com/800309809778160/permissions?access_token=861093975893683%7Ct5r-lFvnrsEQ_xTtUsdMuiEdFdsdE

您可以在此处结帐更多转义字符:http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

答案 2 :(得分:0)

您可以使用此方法

java.net.URLEncoder.encode()