0

此代码工作正常

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://localhost:8090/Servlet/ServletFirst?to=1234&from=567&text=testtest");

如果我在参数值之间使用空格。它抛出异常

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://localhost:8090/Servlet/ServletFirst?to=1234&from=567&textParam=test test");

测试测试之间的空间会引发错误。如何解决?

4

4 回答 4

2

您必须对 URL 中的参数进行 URL 编码;使用%20而不是空间。

HttpGet request = new HttpGet("http://localhost:8090/Servlet/ServletFirst?to=1234&from=567&textParam=test%20test");

Java 有一个类可以为你做 URL 编码,URLEncoder

String param = "test test";
String enc = URLEncoder.encode(param, "UTF-8");

String url = "http://...&textParam=" + enc;
于 2013-10-03T07:17:33.450 回答
1

只需使用 a%20来表示一个空间。

这是 URL 编码的全部部分:http: //www.w3schools.com/tags/ref_urlencode.asp

所以你会想要:

HttpGet request = new HttpGet("http://localhost:8090/Servlet/ServletFirst?to=1234&from=567&text=test%20test");
于 2013-10-03T07:16:38.903 回答
1

利用

URLEncoder.encode("test test","UTF-8")

因此,将您的代码更改为

HttpGet request = new HttpGet("http://localhost:8090/Servlet/ServletFirst?to=1234&from=567&textParam="+URLEncoder.encode("test test","UTF-8"));

注意 不要Encode完整的网址

URLEncoder.encode("http://...test"); // its Wrong because it will also encode the // in http://
于 2013-10-03T07:17:54.340 回答
0

用于%20指示 URL 中的空格,因为空格不是允许的字符。请参阅Wikipedia 条目以获取URL 中的字符数据。

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(
    "http://localhost:8090/Servlet/ServletFirst?to=1234&from=567&textParam=test%20test");
于 2013-10-03T07:18:30.190 回答