首页 / 浏览问题 / 云GIS / 问题详情
超图FAQ:在向iServer服务器发送get请求时,通常我们要传入一些空间数据,当空间数据复杂时,可能get需要在url后面添加的参数会非常庞大,在浏览器端发送请求时,请求会被截断,导致最终请求失败。针对这种情况,有什么好的应对方法么?
43,901EXP 2022年11月08日
超图FAQ:在向iServer服务器发送get请求时,通常我们要传入一些空间数据,当空间数据复杂时,可能get需要在url后面添加的参数会非常庞大,在浏览器端发送请求时,请求会被截断,导致最终请求失败。针对这种情况,有什么好的应对方法么?

1个回答

【问题答案】 GET 请求用于获取资源的表述,在发送 GET 请求时需给出资源所需的参数,在请求 URI 中表现出来。不同资源不同操作需要传递的参数有很大差别,有可能出现参数过多而导致 URI 长度过大,比如在访问 distance 资源时,如果量算的点非常多,则参数中会有海量的组数据坐标对,有可能使请求 URI 长度过大而导致响应失败。 SuperMap iServer 提供了这种情况的解决方法,即提供使用 POST 请求模拟 GET 请求的机制。具体是:资源所需参数不放在 URI 中,而是放在 POST 的请求体中,在 POST 请求的 URI 后跟上参数“_method= GET”来标识该请求。 对 distance 资源执行 GET 请求可以根据给定参数量算地图上的距离,下面以 distance 资源为例说明用 POST 请求模拟 GET 请求的具体过程(以 json 格式的表述为例),完整的 HTTP 请求如下: POST /iserver/services/components-rest/rest/maps/WorldMap/distance.json?_method=GET HTTP/1.1 Host: supermapiserver:8090 Content-Length: 96 {"point2Ds":[{"x": 23.00,"y":34.00},{"x":53.55,"y":12.66},{"x": 73.88,"y":12.6}],"unit":"METER"} 其中,请求行(Request Line)中,URI 之后的参数"_method=GET"表明该 POST 请求模拟的是 GET 请求,原 GET 请求所需的参数 point2Ds 和 unit 放在请求体中,以一个 JSON 字符串整体表示,形式为{"参数名1":参数值1,"参数名2":参数值2,……}。
43,901EXP 2022年11月08日
热门文章
关注我们
...