10

「ターゲット ホストを null にすることも、パラメーターに設定することもできません」というエラーが表示されます。

  • マニフェストファイルにインターネット アクセス許可があります
  • URL の前に「http://」を追加しました
  • URLをエンコードします

これは私のコードです:

   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

助言がありますか?ありがとう!

4

3 に答える 3

5

あなたの URL エンコード メソッドが何をしているのかわかりませんが、 のようなフレームワークのメソッドを使用している場合はURLEncoder完全な URL を渡してはいけません。特殊文字をエスケープするためにエンコードする必要があるパラメータ リストだけを渡してください。

完全な URL をエンコードすると、://into%3A%2F%2Fおよびすべての追加のスラッシュを含むすべての文字が % エスケープされ%2Fます。

goodUrlエンコードした後、文字列の値を見てください。

于 2012-09-21T20:48:41.150 に答える
1

使用するだけです:

URLEncoder.encode(YOUR_STRING);
于 2012-09-21T20:19:48.870 に答える
1

リクエストを送信する前に 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);
于 2012-09-21T20:33:16.190 に答える