【问题标题】:URL string on HttpURLConnectionHttpURLConnection 上的 URL 字符串
【发布时间】:2012-02-14 20:35:24
【问题描述】:

考虑下面的 Android 应用代码;

private String GetDistance(String src, String dest) {     
    StringBuilder urlString = new StringBuilder();
    urlString.append("http://maps.googleapis.com/maps/api/distancematrix/json?");
    urlString.append("origins=");   // **"ÇANKIRI,ÇERKEŞ,TURKEY"**
    urlString.append(src);
    urlString.append("&destinations="); // **"ANKARA,ALTINDAĞ,TURKEY"**
    urlString.append(dest);
    urlString.append("&mode=driving&sensor=false");

    Log.d("xxx","URL="+urlString.toString());

    // get the JSON And parse it to get the directions data.
   HttpURLConnection urlConnection= null;
   URL url = null;

   //String urlStr = URLEncoder.encode(urlString.toString(), "utf-8");
   //url = new URL(urlStr);
   url = new URL(urlString.toString());
   ......

如果 src 和 dest 字符串包含 unicode 字符,则 google 距离矩阵服务将失败(状态返回为 NOT_FOUND)。但是,如果我在网络浏览器中使用谷歌地图站点中的字符串,它会返回良好的结果。我也尝试使用 URLEncoder,但我也失败了。

你有什么建议吗?

【问题讨论】:

    标签: android unicode httpurlconnection


    【解决方案1】:

    你应该使用URLEncoder.encode

    示例

    urlString.append(URLEncoder.encode(dest, "utf-8"));
    

    编辑:不要忘记你应该只将它用于参数,而不是整个 url。

    【讨论】:

    • 我的问题是 unicoded emoji 文本没有正确到达服务器,这有帮助。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多