我使用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),或者原因是在其他地方。
答案 0 :(得分:2)
您需要在网址中对特殊字符进行编码,例如“&” ,“?”及其编码值
处字符编码值的完整列表而不是“|”在URL中传递“%7C”
答案 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()