在http get方法中传递复杂参数

时间:2014-09-26 01:59:28

标签: java http xmlhttprequest

我在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]就像网址

http://127.0.0.1:8080//manage/vehicle/searchCircularArea/?center=116.300319&center=39.988877&radius=281

但我怎么写区域的url参数?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

恕我直言,在URL中对此进行编码/序列化的正确方法是:

http://localhost:8000/manage/vehicle/searchCircularArea/?region[0][lng]=116.298871&region[0][lat]=39.991466
    &region[1][lng]=116.298871&region[1][lat]=39.990079
    &region[2][lng]=116.295787&region[2][lat]=39.990079
    &region[3][lng]=116.295787&region[3][lat]=39.991466

(包括为了易读性而包括的换行符,"。"实际应该阅读"%2E")

当然没有什么可以阻止你将JSON扔进URL。但是如果你想要一些RFC证明,它就是上面的解决方案。

答案 1 :(得分:0)

有一个我的解决方案。

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}]"

在服务器中,您可以使用Jackson或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());
     }
}