2012-02-14 12 views
3

アンドロイドアプリの次のコードを検討してください。HttpURLConnectionのURL文字列

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を使用する必要があります

答えて

3

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

編集

例は:あなただけPARAMATERS、全体ではなく、URLのためにそれを使用する必要があります忘れないでください。

+0

それが動作します!助けてくれてありがとう。 – taslan

+0

私の問題は、ユニコードの絵文字のテキストが正しくサーバーに届かなかったため、これが助けになりました。ありがとうございました – deepakgates