【发布时间】:2017-11-20 19:17:01
【问题描述】:
我使用PlaceAutocomplete 来获取一个地名,然后我对其进行url 编码并作为GET 请求的一部分发送到远程主机(在URL 中)。
在远程主机上,我发现一些用户设备正在发送转义的单引号,这会导致问题,因为地名是作为 URL 的一部分发送的。
例如“Andy's Place”作为“Andy\'s Place”发送
反斜杠 \ 是 URL 的一部分,原因很明显。
...但大多数情况下,这种情况不会发生...例如在我自己的测试设备上,它不会...这个地方被发送/接收为“Andy's Place”。
我正在尝试从头到尾遍历整个链条,以查看可能发生意外逃逸的位置。我试图总结下面的链,沿途遗漏了一些东西(例如,我不只发送地点名称,我也发送其他东西)......我希望我'已经包含了所有重要的部分:
Place place = PlaceAutocomplete.getPlace(this, data);
String placeName = (String) place.getName();
EditText_placeName.setText(placeName);
// ... later ...
String newPlaceName = EditText_placeName.getText().toString();
String encodedPlaceName = Uri.encode(newPlaceName);
URL url = new URL(strBaseURL + '/' + encodedPlaceName);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
responseCode = connection.getResponseCode();
上述链中是否有任何内容可能会在 某些 设备上的 URL 中引入不需要的转义字符,但在其他设备上不会?
作为一种脚注,我知道通过 POST(在正文中)而不是 GET(作为 URL 的一部分)发送数据可能会更好(可能会完全解决我的问题),确实这就是我现在正在努力的方向,但我仍然想知道\ 角色是如何通过上述链条的,至少部分出于好奇。
【问题讨论】:
标签: android url httpurlconnection urlencode