在HTTP GET方法
问题描述:
传递复杂参数,我该怎么传递HTTP GET方法一样在HTTP GET方法
region:[{'lng':116.298871, 'lat':39.991466},{'lng':116.298871, 'lat':39.990079},{'lng':116.295787, 'lat':39.990079},{'lng':116.295787, 'lat':39.991466}]]
参数,如:http://127.0.0.1:8080//manage/vehicle/searchCircularArea/?region=
我知道center:[116.300319,39.988877]
是如URL
http://127.0.0.1:8080//manage/vehicle/searchCircularArea/?center=116.300319¢er=39.988877&radius=281
但如何我写的地区的网址参数?
感谢您的帮助
答
恕我直言,编码正确的方法/在一个URL序列化,这将是:包括为便于清晰起见
http://localhost:8000/manage/vehicle/searchCircularArea/?region[0][lng]=116.298871®ion[0][lat]=39.991466
®ion[1][lng]=116.298871®ion[1][lat]=39.990079
®ion[2][lng]=116.295787®ion[2][lat]=39.990079
®ion[3][lng]=116.295787®ion[3][lat]=39.991466
(换行符,实际上应该 “”阅读“%2E”)
当然,没有什么能够阻止您将JSON扔到URL中。但如果你想要一些RFC的证明,这是上面的解决方案。
答
有一个我的解决方案。
region:[{'lng':116.298871, 'lat':39.991466},{'lng':116.298871, 'lat':39.990079},{'lng':116.295787, 'lat':39.990079},{'lng':116.295787, 'lat':39.991466}]
也许你可以把该区域,如:
http://localhost:8080//manage/vehicle/searchCircularArea/?region="[{'lng':116.298871, 'lat':39.991466},{'lng':116.298871, 'lat':39.990079},{'lng':116.295787, 'lat':39.990079},{'lng':116.295787, 'lat':39.991466}]"
在服务器可以使用杰克逊或GSON或其他你喜欢的JSON字符串转换为一个对象。
可能:
class Loc {
private double lng;
private double lat;
getter and setter;
}
class Test {
public static void main(String[] args) {
String region = "[{'lng':116.298871, 'lat':39.991466},{'lng':116.298871, 'lat':39.990079},{'lng':116.295787, 'lat':39.990079},{'lng':116.295787, 'lat':39.991466}]";
List<Loc> res = new Gson().fromjson(region), new TypeToken<List<Loc>>(){}.getType());
}
}