2012-03-31 4 views
1

안녕 얘들 아 나는 일부 데이터를 Google에 게시하고 응답을 얻는 python 스크립트를 가지고있다. 스크립트는 아래와 같습니다파이썬에서 루비로 변환

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' 

나는 루비 스크립트로 동일한 응답을 얻고 싶습니다. 제대로 요청을 구성 할 수 없으며 항상 badimplementation 오류 또는 http 501 오류가 발생합니다. 실수가 어디 있는지 말해 줄 수 있니? (루비 스크립트는 아래에 첨부되어 있습니다).

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) 

답변

1

From the documentation : 지정된 URI 객체에

게시물 HTML 폼 데이터. 양식 데이터는 문자열에서 문자열으로의 해시 매핑 으로 제공되어야합니다. 내가 제대로 그 이해하면

당신은 양식에, 매개 변수를 전달해야 : {"param1" => "value1", "param2"=>"value2"}

난 그냥 당신이 당신의 요청에 전달하는 매개 변수의 이름이 무엇인지 이해하지 못했다. 여기

공식 문서에서도, 메소드 순 : 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 

Link to the examples

희망 하시겠습니까?

편집 : POST 요청에 매개 변수로 문자열 받아 기능 : Net::HTTP::request_post

+0

#을 <인터넷 :: HTTPNotImplemented : 0x107ffa0e8> 난 항상이 오류가 전무. –

+0

또한 google api에 따라 키 값 쌍으로 게시해서는 안됩니다. 파이썬 스크립트에서 볼 수있는 것처럼 16 진수 문자열을 게시해야합니다. –

+0

그래서 post_form을 사용할 수 없으며 대신 Net :: HTTP.request_post를 사용하십시오. 문자열을 매개 변수로 사용합니다. 서버가 여전히 501로 응답하면 시도한 실제 요청을보고 파이썬 스크립트에 의해 생성 된 요청과 비교하십시오. – Castilho

관련 문제