2012-02-07 3 views
2

Я использую HTTParty для размещения информации на сервер, используя следующий код:POSTING больших объемов данных с HTTParty

this_component = {"name" => "something", "ip" => "localhost", "logs" => logs_to_push} 
payload = {"payload" => JSON.dump(this_component)} 
response = JSONClient.post("http://localhost:8080/log", :body => '', :query => payload) 

Проблема заключается в том, что я получаю Connection reset by peer (Errno::ECONNRESET) сообщений, когда POST фактически выполняет, который я Я уверен, что это связано с большой загрузкой моей полезной нагрузки (поскольку logs_to_push - это массив с 200 строк журнала в нем). Как бы я реорганизовал выше, чтобы я мог успешно продвигать эти данные?

ответ

3

Получается, что для большого количества вещей вы должны поставить полезную нагрузку в :body, а не :query. Для будущих людей, которые столкнулись с этой проблемой, правильный код (отработка в приведенном выше примере) будет:

this_component = {"name" => "something", "ip" => "localhost", "logs" => logs_to_push} 
payload = {"body" => {"payload" => JSON.dump(this_component)}} 
response = JSONClient.post("http://localhost:8080/log", payload) 
+1

Это на самом деле не связанное на HTTParty, но на сервере, на который отправляется запрос. Максимальная длина зависит от программного обеспечения сервера. См. Некоторые значения в этом сообщении. Http://stackoverflow.com/questions/812925/what-is-the-maximum-possible-length-of-a-query-string –

1

Попробуйте это за сообщение Req

require 'httparty' 
require 'json' 

load = {:name => "xyz",:logs => "xyz"} 
payload = load.to_json 
url="http://xyz.com/abc" 
response = HttParty.post(url,{:body => payload}) 

Благодаря

Смежные вопросы