嗨我想通过Retrofit
做一个简单的http获取查询。翻新无效URI
我的参数有一些特殊字符,看起来URL编码失败。
原文:
data=[out:json];node["name"~"Karlsruhe"]["place"~"city|village|town"];out body;
正确的编码应该是这样的:
data=%5Bout%3Ajson%5D%3Bnode%5B%22name%22~%22Karlsruhe%22%5D%5B%22place%22~%22city%7Cvillage%7Ctown%22%5D%3Bout%20body%3B
但改造创造这样的:
data=[out:json];node[%22name%22~%22Karlsruhe%22][%22place%22~%22city|village|town%22];out%20body;
,这将失败:
java.lang.IllegalStateException:作为java.net.URI无效: http://overpass.osm.rambler.ru/cgi/interpreter?data=[out:json];node[%22name%22~%22Karlsruhe%22][%22place%22~%22city|village|town%22];out%20body; 在com.squareup.okhttp.HttpUrl.uri(HttpUrl.java:336)在 com.squareup.okhttp.internal.http.RouteSelector.resetNextProxy(RouteSelector.java:135) 在 com.squareup.okhttp.internal .http.RouteSelector。(RouteSelector.java:71) 在 com.squareup.okhttp.internal.http.RouteSelector.get(RouteSelector.java:76) 在 com.squareup.okhttp.internal.http.HttpEngine。在 com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:245) 连接(HttpEngine.java:321) 在com.squareup.okhttp.Call.getResponse(Call.java:267)在 com.squareup.okhttp.Call $ ApplicationInterceptorChain.proceed(Call.java:224)(Call.java:79) retrofit.OkHttpCall.execute(OkHttpCall.java:112) )
在这里可以做些什么来解决这个编码问题? 谢谢
这将在OkHttp 2.6.0-SNAPSHOT中修复。 –