1

我试图在我的一个参数中发出一个带有冒号的 get,但它失败了,unknownHostException这是我的代码:

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"

所以看起来冒号正在破坏获取请求。有没有办法来解决这个问题?为什么编码它不能解决问题?我的编码 id 如下所示:

    
%7B%22ID%22%3A%22约翰%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 回答