首页 文章

如何在URL中传递多个参数?

提问于
浏览
26

我试图弄清楚如何在URL中传递多个参数 . 我想将我的android类的纬度和经度传递给java servlet . 我怎样才能做到这一点?

URL url;
double lat=touchedPoint.getLatitudeE6() / 1E6;
double lon=touchedPoint.getLongitudeE6() / 1E6;
url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+lon);

在这种情况下,输出(写入文件)是28.53438677.472097 . 这是有效的,但我想在两个单独的参数中传递纬度和经度,以便减少我在服务器端的工作 . 如果不可能,我怎么能至少在lat和lon之间添加一个空格,以便我可以使用tokenizer类来获取我的纬度和经度 . 我尝试了以下行,但无济于事 .

url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+" "+lon);
output- Nothing is written to file
        url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+"&?param2="+lon);
output- 28.534386 (Only Latitude)
        url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+"?param2="+lon);
output- 28.532577?param2=77.502996

我的servlet代码如下:

req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
final String par1 =  req.getParameter("param1");
final String par2 = req.getParameter("param2");
FileWriter fstream = new FileWriter("C:\\Users\\Hitchhiker\\Desktop\\out2.txt");
BufferedWriter out = new BufferedWriter(fstream);
out.write(par1);
out.append(par2);
out.close();

另外我想知道这是将数据从Android设备传递到服务器的最安全和最安全的方式 .

3 回答

  • 2

    这个

    url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+"&param2="+lon);
    

    必须工作 . 对于任何奇怪的原因1,您需要在第一个参数之前 ? ,在以下参数之前需要 & .

    使用复合参数

    url = new URL("http://10.0.2.2:8080/HelloServlet/PDRS?param1="+lat+"_"+lon);
    

    也会工作,但肯定不好 . 您可以在URL中禁止't use a space there as it',但您可以将其编码为 %20+ (但这样的风格更糟糕) .


    1说明了吗?将路径和参数分开,并且将参数彼此分开并不能解释原因 . 一些RFC说“使用?那里和那里”,但我不明白为什么他们没有选择相同的角色 .

  • 46

    我对Java知之甚少,但URL查询参数应该用“&”分隔,而不是“?”

    http://tools.ietf.org/html/rfc3986是使用"sub-delim"作为关键字的参考的好地方 . http://en.wikipedia.org/wiki/Query_string是另一个好消息来源 .

  • 3

    您可以将多个参数传递为“ ?param1=value1&param2=value2

    但它's not secure. It'易受 Cross Site Scripting (XSS) Attack 的影响 .

    您的参数可以简单地用脚本替换 .

    看看这个articlearticle

    您可以使用StringEscapeUtils的API来确保其安全

    static String   escapeHtml(String str) 
              Escapes the characters in a String using HTML entities.
    

    即使在没有采取上述预防措施的情况下使用 https url也不是一个好习惯 .

    看看相关的SE问题:

    Is URLEncoder.encode(string, "UTF-8") a poor validation?

相关问题