我需要使用java对CGI进行HTTP GET并向其传递一些参数,其中一个参数本身就是一个带有一些嵌入式CGI参数的URL。
我试过
String cgiArgs="client="+clientAddr+"&tag="+sessionId+"&rates="+ratesString
+"&callbackURL="+URLEncoder.encode(callbackURL);
if (null != debugGateway)
cgiArgs += "&gateway=" +debugGateway; // for debugging
URI u_ = new URI("http", null, "scimitar", 3000, "/igmpcgi/allocateAuxiliaryStream",
cgiArgs, null);
URL u = u_.toURL();
URLConnection conn = u.openConnection();
不幸的是,java.net.URLEncoder.encode()
方法以这样的方式引用事物,然后在openConnection()
期间再次引用。
当某些key = value对包含本身包含?,&和=字符的字符串值时,构造CGI参数字符串的正确java方法是什么?