2013-06-16 3 views
1

루비 스크립트를 통해 POST 데이터를 보내야합니다. 나는 다음과 같은 코드로, requests를 사용하여, 파이썬을 통해 보낼 수있었습니다 :ruby에서 POST 요청 - 파이썬에서

payload = {"firstName": "John", "lastName": "Appleseed"} 
headers = {'content-type': 'application/json'} 
r = requests.post ("http://localhost:8000/api/v1/person/?format=json",data=json.dumps(payload), headers = headers) 

을 지금, 나는 net/http와 루비로 번역하려고 :

url = "http://localhost:8000/api/v1/person/?format=json" 
payload = {:firstName => 'John', :lastName => 'Appleseed'}.to_s 

request = Net::HTTP::Post.new(url) 
request.add_field('content-type', 'application/json') 
request.body = payload 

uri = URI.parse(url) 
http = Net::HTTP.new(uri.host, uri.port) 
response = http.request(request) 

을 그러나 나는군요 404 서버에서. 루비 코드에 대해 내가 뭘 잘못하고 있을지 모르겠다.

>> {:firstName => 'John', :lastName => 'Appleseed'}.to_s 
=> "firstNameJohnlastNameAppleseed" 

json.dumps

가 출력을 생성하지 않습니다 어떤 payload에서

답변

1

봐처럼 보인다.

>> require "json" 
=> true 
>> {:firstName => 'John', :lastName => 'Appleseed'}.to_json 
=> "{\"firstName\":\"John\",\"lastName\":\"Appleseed\"}" 
+0

나는 또한 'URL = 변경했다 : 당신은 대신 to_json를 사용하려면 ": // localhost를 : HTTP 8000/API/V1/사람/형식 = json으로"'URL '로 = "HTTP :// localhost : 8000' 그리고 상대 경로로 요청을 만든다 :'request = Net :: HTTP :: Post.new ("/ api/v1/person /? format = json")' – leonsas

+0

이 구문을 사용할 수있다. :'payload = {firstName : "John", lastName : "Appleseed"}'해시를 생성합니다. – steenslag