Geoserver POST GetMap request with XML body
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 29 янв 2014, 13:03
- Репутация: 0
Geoserver POST GetMap request with XML body
Добрый день!
Задача вернуть png-шку из геосервера с помощью POST запроса с телом XML вида:
http://www.how2map.com/2013/10/geoserve ... -post.html
Вместо картинки приходит ответ с MIME type "text/xml".
Нужна ли предварительная настройка геосервера для обработки POST запросов с XML телом?
В чем может быть проблема?
Задача вернуть png-шку из геосервера с помощью POST запроса с телом XML вида:
http://www.how2map.com/2013/10/geoserve ... -post.html
Вместо картинки приходит ответ с MIME type "text/xml".
Нужна ли предварительная настройка геосервера для обработки POST запросов с XML телом?
В чем может быть проблема?
Последний раз редактировалось OlegZhdanov 29 апр 2014, 10:30, всего редактировалось 1 раз.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Geoserver POST GetMap request with XML body
Вы отправляете запрос GetMap, а приходит xml? Откройте его, почти наверняка там сообщение об ошибке.
[ Сообщение с мобильного устройства ]
[ Сообщение с мобильного устройства ]
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 29 янв 2014, 13:03
- Репутация: 0
Re: Geoserver POST GetMap request with XML body
Да, там ошибка. До этого ошибки в теле пост запросы выкидывались в консоль...
Странно что эта ошибки выкидывается на шаблонный запрос из геосервера (Demo request: WMS_getMap_inlineFeatureSmile.xml)
URL: http://192.168.0.134:8084/geoserver/wms
BODY:
Код: Выделить всё
<ServiceExceptionReport xmlns="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.3.0" xsi:schemaLocation="http://www.opengis.net/ogc http://192.168.0.134:8084/geoserver/schemas/wms/1.3.0/exceptions_1_3_0.xsd">
<ServiceException code="MissingParameterValue" locator="request">
Could not determine geoserver request from http request org.geoserver.platform.AdvancedDispatchFilter$AdvancedDispatchHttpRequest@2848cac6
</ServiceException>
</ServiceExceptionReport>
URL: http://192.168.0.134:8084/geoserver/wms
BODY:
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<ogc:GetMap xmlns:ogc="http://www.opengis.net/ows"
xmlns:gml="http://www.opengis.net/gml"
version="1.2.0"
service="WMS">
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
xmlns="http://www.opengis.net/sld"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:dave="http://blasby.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserLayer>
<Name>Inline</Name>
<InlineFeature>
<FeatureCollection>
<featureMember>
<BodyPart>
<Type>Face</Type>
<polygonProperty>
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>
496,273 492,241 481,211 462,184 437,161 407,141 373,126 335,117 296,114 257,116 219,125 185,139
155,159 130,184 111,212 100,243 96,274 100,306 111,336 130,364 155,388 185,408 219,422 257,431
296,434 335,430 373,420 407,405 437,385 462,362 481,335 492,305 496,273
</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</polygonProperty>
</BodyPart>
</featureMember>
<featureMember>
<BodyPart>
<Type>Eye</Type>
<polygonProperty>
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>
259,346 258,341 256,336 252,332 247,329 241,326 234,324 227,323 219,323 211,323 204,324 197,326
191,328 186,332 182,336 180,340 179,345 180,350 182,354 186,358 191,362 197,364 204,366 211,367
219,368 227,368 234,367 241,365 247,362 252,359 256,355 258,350 259,346
</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</polygonProperty>
</BodyPart>
</featureMember>
<featureMember>
<BodyPart>
<Type>Eye</Type>
<polygonProperty>
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>
406,346 405,341 403,336 399,332 394,329 388,326 381,324 374,323 366,323 358,323 351,324 344,326
338,328 333,332 329,336 327,340 326,345 327,350 329,354 333,358 338,362 344,364 351,366 358,367
366,368 374,368 381,367 388,365 394,362 399,359 403,355 405,350 406,346
</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</polygonProperty>
</BodyPart>
</featureMember>
<featureMember>
<BodyPart>
<Type>Nose</Type>
<polygonProperty>
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>
310,286 310,282 308,278 307,275 304,272 301,269 298,268 294,266 290,266 286,266 282,268 279,269
276,272 273,275 272,278 270,282 270,286 270,290 272,294 273,297 276,300 279,303 282,304 286,306
290,306 294,306 298,304 301,303 304,300 307,297 308,294 310,290 310,286
</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</polygonProperty>
</BodyPart>
</featureMember>
<featureMember>
<BodyPart>
<Type>Mouth</Type>
<polygonProperty>
<gml:Polygon>
<gml:outerBoundaryIs>
<gml:LinearRing>
<gml:coordinates>
397,226 396,209 396,196 390,185 384,175 368,163 353,155 331,150 308,149 283,148 261,153 231,163
209,175 195,189 186,209 182,221 187,226 193,214 195,205 200,197 203,192 215,185 226,177 241,171
256,167 266,163 281,161 297,161 321,160 341,160 359,168 371,175 382,185 388,197 390,215 390,225
394,226 397,226
</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</polygonProperty>
</BodyPart>
</featureMember>
</FeatureCollection>
</InlineFeature>
<UserStyle>
<FeatureTypeStyle>
<Rule>
<Filter>
<PropertyIsEqualTo>
<PropertyName>Type</PropertyName>
<Literal>Face</Literal>
</PropertyIsEqualTo>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">
<ogc:Literal>#FFF265</ogc:Literal>
</CssParameter>
<CssParameter name="fill-opacity">
<ogc:Literal>1.0</ogc:Literal>
</CssParameter>
</Fill>
<Stroke>
<CssParameter name="stroke">
<ogc:Literal>#222222</ogc:Literal>
</CssParameter>
</Stroke>
</PolygonSymbolizer>
</Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
<Rule>
<Filter>
<Or>
<PropertyIsEqualTo>
<PropertyName>Type</PropertyName>
<Literal>Nose</Literal>
</PropertyIsEqualTo>
<PropertyIsEqualTo>
<PropertyName>Type</PropertyName>
<Literal>Mouth</Literal>
</PropertyIsEqualTo>
</Or>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">
<ogc:Literal>#F00620</ogc:Literal>
</CssParameter>
<CssParameter name="fill-opacity">
<ogc:Literal>1.0</ogc:Literal>
</CssParameter>
</Fill>
<Stroke>
<CssParameter name="stroke">
<ogc:Literal>#FF0000</ogc:Literal>
</CssParameter>
</Stroke>
</PolygonSymbolizer>
</Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
<Rule>
<Filter>
<Or>
<PropertyIsEqualTo>
<PropertyName>Type</PropertyName>
<Literal>Eye</Literal>
</PropertyIsEqualTo>
</Or>
</Filter>
<PolygonSymbolizer>
<Fill>
<CssParameter name="fill">
<ogc:Literal>#DD06E0</ogc:Literal>
</CssParameter>
<CssParameter name="fill-opacity">
<ogc:Literal>1.0</ogc:Literal>
</CssParameter>
</Fill>
<Stroke>
<CssParameter name="stroke">
<ogc:Literal>#FF00FF</ogc:Literal>
</CssParameter>
</Stroke>
</PolygonSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</UserLayer>
</StyledLayerDescriptor>
<BoundingBox>
<gml:coord>
<gml:X>0</gml:X>
<gml:Y>0</gml:Y>
</gml:coord>
<gml:coord>
<gml:X>500</gml:X>
<gml:Y>500</gml:Y>
</gml:coord>
</BoundingBox>
<Output>
<Format>image/jpeg</Format>
<Transparent>false</Transparent>
<Size>
<Width>501</Width>
<Height>501</Height>
</Size>
</Output>
<Exceptions>application/vnd.ogc.se+xml</Exceptions>
</ogc:GetMap>
Последний раз редактировалось OlegZhdanov 25 апр 2014, 13:20, всего редактировалось 1 раз.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Geoserver POST GetMap request with XML body
Попробовал отправить ваш запрос на разные инстансы геосервера, то что приходит в ответ - во вложении. Можете попробовать сами, например, через сервис http://www.hurl.it/, адрес GeoServer - http://suite.opengeo.org/geoserver/wms Может у вас на пути от клиента до сервера кто-то режет тело post запроса? Никаких дополнительных настроек на уровне GeoServer делать не нужно.
- Вложения
-
- загруженное.jpg (16.08 КБ) 9852 просмотра
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 29 янв 2014, 13:03
- Репутация: 0
Re: Geoserver POST GetMap request with XML body
Спасибо! Я пробовал отправлять POST запросы с помощью расширения для хрома "POSTMAN". Но в ответ не приходит картинка, только xml или html-ки. Пытался эмулировать параметры запроса, как здесь http://www.hurl.it/, но ничего не получалось. Пробовал отправлять постзапросы с XML в java приложении, но в ответ так же приходит XML.
Возможно приложение с сайта http://www.hurl.it/ добавляет какие-то свойства в заголок или убирает. Или проблемы с кодировкой, не ясно...
Параметры пост запроса hurt.it
Параметры пост запроса POSTMAN:
Есть идеи?
Возможно приложение с сайта http://www.hurl.it/ добавляет какие-то свойства в заголок или убирает. Или проблемы с кодировкой, не ясно...
Параметры пост запроса hurt.it
Код: Выделить всё
Remote Address:184.73.160.229:80
Request URL:http://www.hurl.it/execute_request
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Content-Length:8452
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:_ga=GA1.2.1756318096.1398409711
Host:www.hurl.it
Origin:http://www.hurl.it
Referer:http://www.hurl.it/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
X-Requested-With:XMLHttpRequest
Form Dataview sourceview URL encoded
follow_redirects:
method:POST
url:http://suite.opengeo.org/geoserver/wms
username:
password:
digest_username:
digest_password:
consumer_key:
consumer_secret:
access_token:
token_secret:
signature_type:query
body:<?xml .........................
Response Headersview source
Connection:keep-alive
Content-Length:61182
Content-Type:text/html; charset=utf-8
Date:Fri, 25 Apr 2014 09:15:25 GMT
Server:gunicorn/17.5
Параметры пост запроса POSTMAN:
Код: Выделить всё
Remote Address:184.154.70.212:80
Request URL:http://suite.opengeo.org/geoserver/wms
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:no-cache
Connection:keep-alive
Content-Length:5238
Content-Type:text/plain;charset=UTF-8
Host:suite.opengeo.org
Origin:chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
Request Payload
<?xml versio..................................
Response Headersview source
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
Connection:Keep-Alive
Content-Disposition:inline; filename=BodyPart.jpg
Content-Type:image/jpeg
Date:Fri, 25 Apr 2014 09:17:06 GMT
Keep-Alive:timeout=5, max=100
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked
Есть идеи?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Geoserver POST GetMap request with XML body
То есть вы отправляете POST запрос на opengeo с помощью hurl.it и все ок - получаете картинку, а делая такой же запрос, но со своей машины, получаете ошибку?
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 29 янв 2014, 13:03
- Репутация: 0
Re: Geoserver POST GetMap request with XML body
Да. И из POSTMANа хрома и из своего java приложения
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Geoserver POST GetMap request with XML body
Тоже попробовал из браузера через Postman и Simple REST Client - все работает, XML не возвращается. Предположу, что какой-то прокси режет body вашего POST запроса, а может и вообще все POST-запросы, так что ищите проблему у себя.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 29 янв 2014, 13:03
- Репутация: 0
Re: Geoserver POST GetMap request with XML body
Подскажите как вы строили запрос?
URL: http://suite.opengeo.org/geoserver/wms
DATA: "текст xml-ки"
или
URL: http://suite.opengeo.org/geoserver/wms
DATA: body = "текст xml-ки"
URL: http://suite.opengeo.org/geoserver/wms
DATA: "текст xml-ки"
или
URL: http://suite.opengeo.org/geoserver/wms
DATA: body = "текст xml-ки"
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Geoserver POST GetMap request with XML body
Первый вариант.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 29 янв 2014, 13:03
- Репутация: 0
Re: Geoserver POST GetMap request with XML body
Спасибо, я разобрался.
В java необходимо задавать параметры:
В java необходимо задавать параметры:
Код: Выделить всё
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
con.setRequestProperty("Content-Type", "text/xml");
con.setRequestProperty("Content-Length", String.valueOf(urlParameters.length()));
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя