Всем привет!
Столкнулся с такой проблемой. При запросах прямого геокодирования сервис работает. При обратном гекодировании ругается.
Не смог найти нигде примера тела XML-запроса, поэтому действовал наугад. Пример запроса:
<soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="
http://www.esri.com/schemas/ArcGIS/10.0">
<soapenv:Header/>
<soapenv:Body>
<ns:ReverseGeocode>
<Location/><X>37.565</X><Y>55.795</Y></Location>
<ReturnIntersection>False</ReturnIntersection>
<PropMods>
<PropertyArray>
<PropertySetProperty>
<Key>ReverseDistanceUnits</Key>
<Value>Meters</Value>
</PropertySetProperty>
<PropertySetProperty>
<Key>ReverseDistance</Key>
<Value>200</Value>
</PropertySetProperty>
</PropertyArray>
</PropMods>
</ns:ReverseGeocode>
</soapenv:Body>
</soapenv:Envelope>
Ошибка:
<span><H1>Server Error in '/ArcGIS/Services' Application.<hr width=100% size=1 color=silver></H1>
<h2> <i>Exception from HRESULT: 0xC00CEE3B</i> </h2></span>
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
<b> Description: </b>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
<br><br>
<b> Exception Details: </b>System.Web.HttpException: Exception from HRESULT: 0xC00CEE3B<br><br>
Если в описании Location убрать </Location>, то ошибки не возникает, но результат всегда нулевой приходит. При этом в логах:
<Msg time='2012-08-07T09:05:05' type='INFO1' code='70024' target='locator.GeocodeServer' methodName='GeocodeServer.ReverseGeocode' machine='GISNIPSRV-01' process='3896' thread='2016'>Reverse geocoding location: IPoint(1,#QNAN0, 1,#QNAN0)</Msg>
<Msg time='2012-08-07T09:05:05' type='INFO3' code='70024' target='locator.GeocodeServer' methodName='GeocodeServer.ReverseGeocode' machine='GISNIPSRV-01' process='3896' thread='2016'>Reverse geocoding result: ; PropMods: ReverseDistanceUnits='Meters' ReverseDistance='200'</Msg>
<Msg time='2012-08-07T09:05:05' type='INFO2' code='100002' target='locator.GeocodeServer' methodName='GeocodeServer.ReverseGeocode' machine='GISNIPSRV-01' process='3896' thread='2016' elapsed='0.00262'>String request succesfully processed. Response size is 388 characters.</Msg>
Видимо, второй вариант запроса верный, но непонятно почему координаты передаются некорректно.
SOAP-сервис прямого геокодирования работает, равно как и по REST работает и прямое и обратное геокодирование.
Кто-то сталкивался с подобной проблемой?