0

我正在尝试建立一个服务器连接以通过 Java 跨越。但是,当我的请求参数(如Bulach West)中有空格时,我总是会收到错误的请求响应。我使用的代码如下:

StringBuilder content = new StringBuilder();

URL url = new URL("http://www.overpass-api.de/api/interpreter?data=[out:xml];node[\"railway\"=\"tram_stop\"][\"name\" = \"Bulach West\"];out;");

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
System.out.println("Content-Type: " +urlConnection.getContentType());
System.out.println("Content-Length: " + urlConnection.getContentLength());
System.out.println( "Date: " +new Date(urlConnection.getDate()));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;

urlConnection.connect();

while ((line = bufferedReader.readLine()) != null) {
       content.append(line + "\n");
}
bufferedReader.close();
 System.out.println("output:\n "+content); 

没有空格的请求可以正常工作。我现在能做什么?最好的问候, 纳扎尔

4

2 回答 2

2

我认为您必须像这里一样对字符串参数进行编码如何编码 url 参数

于 2015-06-17T13:47:37.853 回答
0

谢谢m8的帮助。我找到了一个可行的解决方案。

起初我尝试使用 java 类 对我的 url 进行编码,但由于[\"railway\"= \"tram_stop\"]URLEncoder中的一些特定字符,如\",编码结果不正确。

所以我所做的是复制一个示例网址,例如(http://www.overpass-api.de/api/interpreter?data=[out:xml];node[ \"railway\"=\"tram_stop\"] [\"name\" = \"Bulach West\"];out;)

并将其传递到我的网络浏览器中。发送请求并获得正确响应后,我从网络浏览器中复制了链接并将其添加到我的 java 代码中。发送请求自动编码我的网址。

现在看起来像:(http://www.overpass-api.de/api/interpreter?data[out:xml];node[%22highway%22=%22bus_stop%22[%22name%22%20=%20 %22Bulach+West%22];out ;)

于 2015-06-18T07:14:08.843 回答