1

unknownHostExceptionパラメータの1つにコロンを使用してgetを発行しようとしていますが、次のコードで失敗します。

String id = "{\"ID\":\"John Doe\"}";
String encodedID = URLEncoder.encode(id, "UTF-8").replace("+", "%20");
endpoint="https://127.0.0.1/getResourceNameToUse?id=" + encodedID;
HttpResponse response = new HttpResponse();
HttpGet httpget = new HttpGet(endpoint);
response = httpclient.execute(httpget, new RESTResponseHandler());

次のエラーが発生します。

java.net.UnknownHostException:127.0.0.1 / getResourceNameToUse?id = {"ID"

したがって、コロンがget要求を壊しているように見えます。これを修正する方法はありますか?なぜそれをエンコードしても問題が解決しないのですか?エンコードされたIDは次のようになります。

    
%7B%22ID%22%3A%22John%20Doe%22%7D
4

2 に答える 2

2

コードの概算を実行すると、結果のURLは次のようになります。

https://127.0.0.0/getResourceNameToUse?id=%7B%22ID%22%3A%22John%20Doe%22%7D

私が見る限り、これは絶対に有効なURLです。:を混乱させるような文字は表示されませんHttpClient。例外を見てみましょう:

java.net.UnknownHostException: 127.0.0.0/getResourceNameToUse?id={"ID"

ではなくが表示されるため、エンコードされたURLを使用していないように見えます。投稿内のコードが、実行していたコードと正確に一致しない可能性はありますか?{"ID%7B%22ID%22

また、あなたがIPに行くことに気づきました127.0.0.0127.0.0.1ローカルホストに接続したいチャンスはありますか?

于 2012-05-19T10:03:36.330 に答える
1

コロンをエンコードする基本的にダブルURLで修正できました。

String id = "{\"ID\":\"John Doe\"}";
id = id.replace(":","%3A");
String encodedID = URLEncoder.encode(id, "UTF-8").replace("+", "%20");
endpoint="https://127.0.0.1/getResourceNameToUse?id=" + encodedID;
HttpResponse response = new HttpResponse();
HttpGet httpget = new HttpGet(endpoint);
response = httpclient.execute(httpget, new RESTResponseHandler());
于 2012-05-19T20:46:25.370 に答える