Java 发出以在Unirest.get的url中转义大括号
我正在尝试检索此rest端点的结果: 我是这样做的:Java 发出以在Unirest.get的url中转义大括号,java,rest,unirest,Java,Rest,Unirest,我正在尝试检索此rest端点的结果: 我是这样做的: String geometry1 = "geometry1={\"geometryType\":\"esriGeometryPoint\",\"geometry\":{\"x\":43.5664375,\"y\":1.4675999}}"; String geometry2 = "geometry2={\"geometryType\":\"esriGeometryPoint\",\"geometry\":{\"x\":49.120329
String geometry1 = "geometry1={\"geometryType\":\"esriGeometryPoint\",\"geometry\":{\"x\":43.5664375,\"y\":1.4675999}}";
String geometry2 = "geometry2={\"geometryType\":\"esriGeometryPoint\",\"geometry\":{\"x\":49.120329,\"y\":6.164786}}";
try {
response5 = Unirest.get("http://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer/distance?sr=4326&{geometry1}&{geometry2}&geodesic=true&f=pjson")
.routeParam("geometry1", geometry1)
.routeParam("geometry2", geometry2)
.asJson();
} catch (UnirestException e) {
e.printStackTrace();
}
但是,当非法字符是url的第一个大括号时,我会遇到这个错误:geometry1={
Exception in thread "main" java.lang.IllegalArgumentException: Illegal character in query at index 122
我怎样才能跳出大括号?我尝试了
URLEncoder.encode
。跳出大括号,但似乎没有正确格式化url,因为我得到了错误:geometry1'必须指定“,”“geometry2”必须指定
一个想法是将元素作为字符串而不是JSON获取,然后进行转换。不过可能会慢一点。问题不在于正文的解析,而是unirest中的问题。get传递的url字符串包含花括号,而对于java,字符串中的花括号似乎是非法字符抱歉,我没有意识到。尝试用%7B
和}替换{
在URL中使用%7D
。可能与URLEncoder.encode
没有什么不同,但值得一试。一个想法是将元素作为字符串而不是JSON获取,然后进行转换。不过可能会慢一点。问题不在于解析正文,而在于unirest。get传递的URL字符串包含花括号和for java字符串中的大括号似乎是非法字符抱歉,我没有意识到。请尝试将{
替换为%7B
并将}
替换为URL中的%7D
。可能与urlcoder.encode>不同,但值得一试。