0

全部

我有一个 java servlet 程序来调用 perl 并从 perl 接收数据。我用了

String urlString = "http://[hostname]:[port]/cgi-bin/perl.pl?city="+city+"&chain="+chain;
URL url = new URL(urlString);
URLConnection urlConnection = url.openConnection();
urlConnection.setAllowUserInteraction(false);
InputStream urlStream = url.openStream();

作为访问 perl 的 url,对于 perl 端,使用

my $city = param("city");
my $chain = param("chain"); 
my $url_temp = "http://www.tripadvisor.com/Search?q=${chain}+${city}";

在 GET 参数中获取 city 的值

servlet 和 perl 都适用于没有空格的城市名称,但是,对于“洛杉矶”和“纽约”,我无法想出一个解决方案来使它工作。我试过 string.replace(' ','+'),它什么也没返回;替换为 %20 会使程序出错

任何想法将不胜感激。

4

1 回答 1

0

就像 Konerak 和 Guillaume 说的,使用 url encode ...

// first
try {
   city = URLEncoder.encode(city, "UTF-8");
   chain = URLEncoder.encode(chain, "UTF-8")
} catch (Exception e) {}

// now your code
String urlString = "http://[hostname]:[port]/cgi-bin/perl.pl?city="+city+"&chain="+chain;
URL url = new URL(urlString);
URLConnection urlConnection = url.openConnection();
urlConnection.setAllowUserInteraction(false);
InputStream urlStream = url.openStream();
于 2012-04-10T11:09:42.573 回答