Преобразование Python в ruby

1

Привет, ребята У меня есть сценарий python, который отправляет некоторые данные в google и возвращает ответ. Скрипт ниже

net, cid, lac = 24005, 40242, 62211
import urllib
a = '000E00000000000000000000000000001B0000000000000000000000030000'
b = hex(cid)[2:].zfill(8) + hex(lac)[2:].zfill(8)
c = hex(divmod(net,100)[1])[2:].zfill(8) + hex(divmod(net,100)[0])[2:].zfill(8)
string = (a + b + c + 'FFFFFFFF00000000').decode('hex')
try:
  data = urllib.urlopen('http://www.google.com/glm/mmap',string)
  r = data.read().encode('hex')
  print r
except:
  print 'connect error'

Я хочу получить тот же ответ с ruby-скриптом. Я не могу правильно сформировать запрос, и я всегда получаю ошибку badimplementation или ошибку http 501. Не могли бы вы сказать мне, где ошибка? (Скрипт ruby приведен ниже).

require 'net/http'
def fact(mnc,mcc,cid,lac)
  a = '000E00000000000000000000000000001B0000000000000000000000030000'
  b = cid.to_s(16).rjust(8,'0') + lac.to_s(16).rjust(8,'0')
  c = mnc.to_s(16).rjust(8,'0') + mcc.to_s(16).rjust(8,'0')
  string = [a + b + c + 'FFFFFFFF00000000'].pack('H*')
  url = URI.parse('http://www.google.com/glm/mmap')
  resp = Net::HTTP.post_form(url,string)
  print resp
end
puts fact(5,240,40242,62211)
Теги:
post
http

1 ответ

1
Лучший ответ

Из документации:

Посылает данные формы HTML в указанный объект URI. Данные формы должны быть представлены как отображение хэша из String в String.

Вы должны передать параметры, если я правильно понял, на форме: {"param1" => "value1", "param2"=>"value2"}

Я просто не понял, какие имена параметров вы передаете по вашему запросу.

Вот несколько примеров использования для метода Net :: HTTP :: post_form, также из официального документа:

Пример 1:

uri = URI('http://www.example.com/search.cgi')
res = Net::HTTP.post_form(uri, 'q' => 'ruby', 'max' => '50')
puts res.body

Ex2:

uri = URI('http://www.example.com/search.cgi')
res = Net::HTTP.post_form(uri, 'q' => ['ruby', 'perl'], 'max' => '50')
puts res.body

Ссылка на примеры

Надеюсь, поможет

edit: функция, которая принимает String в качестве параметра для почтового запроса: Net :: HTTP :: request_post

  • 0
    # <Net :: HTTPNotImplemented: 0x107ffa0e8> ноль Я всегда получаю эту ошибку.
  • 0
    Также я не должен публиковать в качестве пары ключ-значение в соответствии с API Google. Я должен просто опубликовать строку HEX, как вы можете видеть в скрипте Python
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню