Geoserver POST GetMap request with XML body

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
OlegZhdanov
Интересующийся
Сообщения: 35
Зарегистрирован: 29 янв 2014, 13:03
Репутация: 0

Geoserver POST GetMap request with XML body

Сообщение OlegZhdanov » 23 апр 2014, 16:57

Добрый день!

Задача вернуть 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

Сообщение Denis Rykov » 24 апр 2014, 07:44

Вы отправляете запрос GetMap, а приходит xml? Откройте его, почти наверняка там сообщение об ошибке.

[ Сообщение с мобильного устройства ]
Spatial is now, more than ever, just another column- The Geometry Column.

OlegZhdanov
Интересующийся
Сообщения: 35
Зарегистрирован: 29 янв 2014, 13:03
Репутация: 0

Re: Geoserver POST GetMap request with XML body

Сообщение OlegZhdanov » 24 апр 2014, 10:13

Да, там ошибка. До этого ошибки в теле пост запросы выкидывались в консоль...

Код: Выделить всё

<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>
Странно что эта ошибки выкидывается на шаблонный запрос из геосервера (Demo request: WMS_getMap_inlineFeatureSmile.xml)

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

Сообщение Denis Rykov » 25 апр 2014, 07:57

Попробовал отправить ваш запрос на разные инстансы геосервера, то что приходит в ответ - во вложении. Можете попробовать сами, например, через сервис http://www.hurl.it/, адрес GeoServer - http://suite.opengeo.org/geoserver/wms Может у вас на пути от клиента до сервера кто-то режет тело post запроса? Никаких дополнительных настроек на уровне GeoServer делать не нужно.
Вложения
загруженное.jpg
загруженное.jpg (16.08 КБ) 9853 просмотра
Spatial is now, more than ever, just another column- The Geometry Column.

OlegZhdanov
Интересующийся
Сообщения: 35
Зарегистрирован: 29 янв 2014, 13:03
Репутация: 0

Re: Geoserver POST GetMap request with XML body

Сообщение OlegZhdanov » 25 апр 2014, 12:19

Спасибо! Я пробовал отправлять POST запросы с помощью расширения для хрома "POSTMAN". Но в ответ не приходит картинка, только xml или html-ки. Пытался эмулировать параметры запроса, как здесь http://www.hurl.it/, но ничего не получалось. Пробовал отправлять постзапросы с XML в java приложении, но в ответ так же приходит XML.
Возможно приложение с сайта 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

Сообщение Denis Rykov » 25 апр 2014, 12:33

То есть вы отправляете POST запрос на opengeo с помощью hurl.it и все ок - получаете картинку, а делая такой же запрос, но со своей машины, получаете ошибку?
Spatial is now, more than ever, just another column- The Geometry Column.

OlegZhdanov
Интересующийся
Сообщения: 35
Зарегистрирован: 29 янв 2014, 13:03
Репутация: 0

Re: Geoserver POST GetMap request with XML body

Сообщение OlegZhdanov » 25 апр 2014, 12:51

Да. И из POSTMANа хрома и из своего java приложения

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Geoserver POST GetMap request with XML body

Сообщение Denis Rykov » 26 апр 2014, 15:43

Тоже попробовал из браузера через Postman и Simple REST Client - все работает, XML не возвращается. Предположу, что какой-то прокси режет body вашего POST запроса, а может и вообще все POST-запросы, так что ищите проблему у себя.
Spatial is now, more than ever, just another column- The Geometry Column.

OlegZhdanov
Интересующийся
Сообщения: 35
Зарегистрирован: 29 янв 2014, 13:03
Репутация: 0

Re: Geoserver POST GetMap request with XML body

Сообщение OlegZhdanov » 28 апр 2014, 13:33

Подскажите как вы строили запрос?
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

Сообщение Denis Rykov » 28 апр 2014, 14:41

Первый вариант.
Spatial is now, more than ever, just another column- The Geometry Column.

OlegZhdanov
Интересующийся
Сообщения: 35
Зарегистрирован: 29 янв 2014, 13:03
Репутация: 0

Re: Geoserver POST GetMap request with XML body

Сообщение OlegZhdanov » 29 апр 2014, 10:29

Спасибо, я разобрался.

В 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()));

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей