簡體   English   中英

如何在URL中傳遞多個參數?

[英]How do I pass multiple parameter in URL?

我試圖弄清楚如何在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 這是有效的,但我想在兩個單獨的參數中傳遞緯度和經度,以便減少我在服務器端的工作。 如果不可能,我怎么能至少在latlon之間添加一個空格,以便我可以使用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設備傳遞到服務器的最安全和最安全的方式。

這個

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中被禁止,但您可以將其編碼為%20+ (但這更糟糕的風格)。


1說明了? 分離路徑和參數,並&彼此分離參數並不能解釋這是什么緣故任何事情。 一些RFC說“使用?那里和那里”,但我不明白為什么他們沒有選擇相同的角色。

我對Java知之甚少,但URL查詢參數應該用“&”分隔,而不是“?”

http://tools.ietf.org/html/rfc3986是使用“sub-delim”作為關鍵字的參考的好地方。 http://en.wikipedia.org/wiki/Query_string是另一個很好的來源。

您可以將多個參數傳遞為“ ?param1=value1&param2=value2

但它並不安全。 它容易受到Cross Site Scripting (XSS) Attack

您的參數可以簡單地用腳本替換。

看看這篇文章文章

您可以使用StringEscapeUtils的 API使其安全

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

即使使用https url來保證安全性而不采取上述預防措施也不是一個好習慣。

看看相關的SE問題:

URLEncoder.encode(字符串,“UTF-8”)驗證不好嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM