2017-04-03 3 views
0

Ich führe eine einfache Sinatra-App, in der ich einige Daten abfragen und einen POST über JSON an eine Webhook-URL zur Verarbeitung senden muss. Ich bin mir nicht sicher, wie ich die Datensätze, die ich für HTTParty abgerufen habe, richtig formatiere.Ergebnisse der ActiveRecord-Abfrage können nicht über HTTParty gesendet werden.

Die Kontakte werden nach /account/{account_id}/contacts.json gedruckt, wie ich sie möchte, sie werden gerade nicht erfolgreich gesendet.

app.rb

get "/account/:account_id/contacts.json" do 
    @contacts = Contact.where("sfid = ?", params[:account_id]) 
    HTTParty.post("https://hooks.webapp.com/hooks/catch/387409/1us4j3/", 
    { 
    :body => [ @contacts ].to_json, 
    :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'} 
    }) 
    @contacts.to_json 
end 
+0

Zunächst einmal gibt es einen Unterschied, wie Daten werden gedruckt "@ contacts.to_json" und wie sie gesendet werden "[@contacts] .to_json". Es kann das Problem sein. Aber wenn es nicht so ist, brauchen wir mehr Informationen darüber, wie sicher Sie sind, dass es nicht gesendet wird. –

+0

'where' gibt bereits ein Array an die Variable '@ contacts' zurück. Der Typ von '@ contacts' ist also bereits ein Array. Ich glaube nicht, dass es notwendig ist, vor der Konvertierung zu json wieder in Array zu konvertieren. ': body => @ contacts.to_json' ist in Ordnung. – Mayank

+0

@ AndréGuimarãesSakata Ich bin sicher, dass es nicht gesendet wird, weil ich eine Testroute habe, die sendet HTTParty.post ("https://hooks.webapp.com/hooks/catch/387409/1us4j3/", { ): Körper => [{: name => 'wert1',: datenschutz => 'wert2'}] .to_json, : headers => {'Inhaltstyp' => 'application/json', 'Accept' => 'application/json '} }) erfolgreich und wird vom Webhook abgefangen. Der Code, den ich in meiner Frage geschrieben habe, wird nicht erwischt. – csakon

Antwort

1

Es scheint der Fehler

2.3.1/lib/ruby ​​/ 2.3.0/net/http/generic_request.rb: 183: in `send_request_with_body '

Es wurde keine Stelle in Ihrer Anfrage gefunden. Sie senden die Parameter Körper und Kopf in einen Hash.

Versuchen Sie folgendes:

get "/account/:account_id/contacts.json" do 
    @contacts = Contact.where("sfid = ?", params[:account_id]) 
    HTTParty.post("https://hooks.webapp.com/hooks/catch/387409/1us4j3/", 
    :body => @contacts.to_json, 
    :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'} 
) 
    @contacts.to_json 
end 

Sie diesen Beitrag Prüfung können auch für jede weitere Informationen über HTTP-Post Here

this helps ..

+0

Das ist es, danke für Ihre Hilfe – csakon

Verwandte Themen