android-HttpURLConnection上的URL字符串

考虑使用以下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).但是,如果我在网络浏览器中使用Google地图站点中的字符串,它将返回良好的结果.我也尝试使用URLEncoder,但是我也失败了.

你有什么建议吗?

解决方法:

您应该使用URLEncoder.encode,

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

编辑:别忘了您应该仅将其用于参数,而不是整个url.

上一篇:HttpURLconnection的介绍


下一篇:转 关于HttpClient,HttpURLConnection,OkHttp的用法