Подключение к Bing Maps SDK из приложения Rails

Я пытаюсь подключиться к Bing Maps SDK через приложение RoR. Моя цель - рассчитать расстояние между двумя точками после их геокодирования. Я новичок в SOAP и ROR, поэтому могу ошибаться.

Два дня гугления (Binging?), и я заканчиваю. Вот что я делаю:

Окружающая обстановка

Ruby 1.8.7 для Windows Vista (получение Mac на следующей неделе). gem install httpclient --source http://dev.ctor.org/download/ gem install soap4r --include-зависимости

Тест браузера

Переход на https://staging.common.virtualearth.net/find-30/common.asmx?wsdl Мне предлагается ввести имя пользователя и пароль. Я могу успешно войти и получить файл WSDL. Таким образом, URL, идентификатор пользователя и пароль верны.

Код

require 'rubygems'
gem 'soap4r'
require 'httpclient'
require "soap/wsdlDriver"
  user = "XXXXXX"
  pass = "XXXXXXX"
  wsdl = "https://staging.common.virtualearth.net/find-30/common.asmx?wsdl"
  driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
  driver.options["protocol.http.basic_auth"] << [wsdl,user,pass]

Консольный вывод

драйвер = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver


HTTPClient::BadResponseError: неожиданный ответ: ‹#HTTP::Message::Headers:0x4f6cabc @reason_phrase="Не авторизовано", @request_uri=nil, @body_date=nil, @status_code=401, @dumped=false, @request_method=nil, @chunked=false, @body_charset=nil, @request_via_proxy=nil, @header_item=[["Connection", "close"], ["Date", " Чт, 09 июля 2009 г., 02:53:59 GMT"], ["Сервер", "Microsoft-IIS/6.0"], ["P3P", "CP=\"BUS CUR CONo FIN IVDo ONL OUR PHY SAMo TELo\" "], ["X-Powered-By", "ASP.NET"], ["WWW-Authenticate", "Digest qop=\"auth\", realm=\" MapPoint\", nonce=\"87b3d5847da867f7930801742100f2e55de88fd216317a696fe1411f79e3\ ""], ["Content-Length", "0"]], @body_size=0, @http_version="1.1", @body_type=nil, @request_query=nil, @is_request=false> из c:/ruby/ lib/ruby/gems/1.8/gems/httpclient-2.1.5.2/lib/httpclient.rb:840:in `follow_redirect'

Ссылки, которые я просмотрел

Вполне возможно, что один из них имеет ответ. У меня просто недостаточно знаний в SOAP, чтобы найти его...

http://hideoustriumph.wordpress.com/2008/05/05/ws-deathstar-for-the-rest-of-us/ http://s2.diffuse.it/blog/show/62-Consume_SSL_protected_Web_Services_with_soap4r http://dev.ctor.org/doc/soap4r/RELEASE_en.html#samples http://markthomas.org/2007/09/12/начало-с-soap4r/ http://www.elctech.com/articles/using-soap-with-ruby-and-soap-mapping-object http://wso2.org/project/wsf/ruby/1.1.0/docs/manual.html http://www.globalnerdy.com/2009/06/29/learnhub-powered-by-rails-searchs-with-bing/ http://rpheath.com/posts/298-using-soap-services-in-ruby


person Kevin Dewalt    schedule 09.07.2009    source источник
comment
Хорошая дискуссия на 47hats о заинтересованности в получении другого варианта, кроме Google Maps. Bing — это вариант, но, к сожалению, инструментов пока нет. См. подсказку на 10 000 долларов: 47hats.com/?p=1329.   -  person Kevin Dewalt    schedule 21.07.2009


Ответы (2)


Ознакомьтесь с библиотекой Ruby Savon, безусловно, лучшим клиентом SOAP в Ruby.

person s01ipsist    schedule 21.07.2010

Пользователь savon для обработки wsdl, а затем использует геокод для расчета расстояния между двумя точками. потому что API карты bing не дает прямой 'разницы расстояния', но предоставляет нам широту/долготу точек. и Geocoder может дать более точное расстояние между двумя парами широта/долгота

person ImranNaqvi    schedule 20.10.2015