在 URL 中使用特殊字符,例如 'ß' 或 space

Use special characters like 'ß' or space in URL

我通过地理编码得到一个地址,看起来像这样,例如:"Downing Street, London",我用这个地址字符串和其他参数构建了一个 URL 字符串。

这就是我构建 url 字符串的方式:

String url = "http://www.friendlyride.at/...?...&enterstring="+enterstring+"&enterlng="+enterLng+"&enterlat="+enterLat+"&exitstring="+exitstring+"&exitlng="+exitLng+"&exitlat="+exitLat+"&info="+infoinput;

enterstring = "Downing Street, London"

现在,当我记录 URL(然后用 HTTPDataHandler 在 JSON AsyncTask 中调用)时,URL 是 link(蓝色)直到“ß”、space 或“,”在字符串中。

这是 Android 监视器中的 URL (Log.d):

http://www.friendlyride.at/...?...&enterstring=Downing 伦敦街道&enterlng=-0.1272206&enterlat=51.5032077&exitstring=伦敦修道院路&exitlng=-0.1830032&exitlat=51.5367909&info=info

整个url应该是一个link(这里它在space处中断)。如果我在浏览器中手动输入 Url,它会与 space 和所有内容一起使用。 那么如何将整个字符串用作 url?

如果您需要任何代码,请告诉我,我不确定应该包括什么代码。 :)

您的 url 需要进行编码才能有效。

为此目的并大大提高您的代码质量,我强烈建议您使用 Uri.Builder 构建您的 urls :

Uri.Builder builder = new Uri.Builder();
builder.scheme("http")
       .authority("www.friendlyride.at")
       .appendQueryParameter("enterstring", enterstring)
       .appendQueryParameter("enterlng", Long.toString(enterLng))
       .appendQueryParameter("enterlat", Long.toString(enterLat));
       //Append all your other parameters
String myUrl = builder.build().toString();

这将构建一个有效的编码 url,例如:http://www.friendlyride.at?enterstring=Downing%20Street%2C%20London&enterlng=-0.1272206&enterlat=51.5032077

注意:我不知道你url中的...?...部分是什么,我没有把它放在我的答案中。