HTTP請求中,get和post是最常見的兩種請求方法。get請求通常用來獲取數(shù)據(jù),而post請求則用于向服務器提交數(shù)據(jù)。對于get請求,可以通過在url中添加參數(shù)來傳遞數(shù)據(jù),如:
http://example.com/user?name=john&age=25
但是,當要傳遞復雜的結(jié)構(gòu)化數(shù)據(jù)類型,如json數(shù)據(jù)類型時,上述方式就不太方便了。這時候,可以使用將數(shù)據(jù)放入url中請求的方式變?yōu)閷?shù)據(jù)放在請求體中的方式進行傳遞。在get請求中傳遞json數(shù)據(jù),可以通過在url后面添加一個“?”符號和一個key-value對,value是一個json字符串的方式來傳遞數(shù)據(jù)。
http://example.com/api/user?json={"name":"John","age":25}
在服務器端,可以通過解析url中的參數(shù)來獲取json數(shù)據(jù)。在Java中,可以使用以下代碼來解析json數(shù)據(jù):
String jsonStr = request.getParameter("json");
JSONObject jsonObj = new JSONObject(jsonStr);
String name = jsonObj.getString("name");
int age = jsonObj.getInt("age");
上述代碼中,request.getParameter("json")方法可以獲取url中的json字符串,然后使用JSONObject類將其轉(zhuǎn)化為json對象。接下來就可以從json對象中獲取name和age屬性。
雖然使用get請求傳遞json數(shù)據(jù)可以實現(xiàn)數(shù)據(jù)傳輸,但是由于數(shù)據(jù)被放在url中,容易被惡意攻擊者獲取到,不太安全。因此,建議在需要傳輸json數(shù)據(jù)時,使用post請求進行傳輸。