所有
我有一个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将使程序运行错误任何想法都会受到赞赏。
答案 0 :(得分:0)
像Konerak和Guillaume所说,使用url编码...
// 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();