「ターゲットホストをnullにするか、パラメータに設定してはいけません」というエラーが表示されます。
これは私のコードです:
String url = "http://maps.google.com/maps/api/directions/json?origin=1600 Pennsylvania Avenue NW, Washington, DC 20500&destination=1029 Vermont Ave NW, Washington, DC 20005&sensor=false";
HttpClient httpclient = new DefaultHttpClient();
String goodURL = convertURL(url);//change weird characters for %etc
HttpPost httppost = new HttpPost(goodURL);
HttpResponse response = httpclient.execute(httppost);
5行目(上記の最後の行)で、私のプログラムは例外をスローします。正確なエラーは次のとおりです。
Java.lang.IllegalArgumentException: Host name may not be null
メソッドconvertURLで文字列をエンコードします...
goodURL = http://maps.google.com/maps/api/directions/json?origin=3%20Cedar%20Ave%2c%20Highland%20Park%2c%20NJ%2008904&destination=604%20Bartholomew%20Road%2c%20Piscataway%2c%20New%20Jersey%2008854&sensor=false
助言がありますか?ありがとう!
URLエンコードメソッドが何をしているのかわかりませんが、URLEncoder
のようなフレームワークのメソッドを使用している場合、完全なURLを渡してはいけません、パラメータリストだけ特殊文字をエスケープするにはエンコードする必要があります。
完全なURLをエンコードすると、://
を%3A%2F%2F
に、追加のすべてのスラッシュを%2F
に含め、すべての文字がパーセントエスケープされます。
エンコードした後、goodUrl
文字列の値を確認してください。
使用するだけ:
URLEncoder.encode(YOUR_STRING);
リクエストを投稿する前にURL文字列をエンコードしますが、パラメータは?:の後にのみエンコードします。
String url = "http://maps.google.com/maps/api/directions/json?";
String params = "Origin=1600 Pennsylvania Avenue NW, Washington, DC 20500&destination=1029 Vermont Ave NW, Washington, DC 20005&sensor=false";
HttpClient httpclient = new DefaultHttpClient();
String goodParams = convertURL(params);//change weird characters for %etc
HttpPost httppost = new HttpPost(url + goodParams);
HttpResponse response = httpclient.execute(httppost);