Kann jemand ein Beispiel für die Erstellung eines Datensatzes in Quickbooks Online/Intuit Anywhere mit Ruby und Httparty posten?
Ich arbeite an einer Integration zu einem Ruby on Rails app mit Intuit Anywhere, und bin in ein Problem mit meiner POST-Anfrage beim Versuch, einen neuen Datensatz zu erstellen laufen. Ich konnte erfolgreich Daten (Kunden) mit einem POST-Befehl abrufen, der keine XML-Daten im Hauptteil der Anforderung erfordert, aber ich habe Probleme, wenn ich versuche, neue Datensätze zu erstellen, die erforderliche Felder haben, die im Hauptteil der Anforderung in XML übergeben werden müssen.
Ich erhalte bei jeder Entität, für die ich versuche, einen Datensatz zu erstellen, die gleiche Fehlermeldung: ein ungültiges oder fehlendes Pflichtfeld. Ich habe den Eindruck, dass das XML im Textkörper (wo die Daten für die erforderlichen Felder hinzugefügt werden) entweder ignoriert (falsche Formatierung?) oder nicht angehängt wird.
Ich habe gehofft, dass jemand, der mit Ruby vertraut ist, ein Beispiel für die Erstellung eines Datensatzes mit httparty posten könnte. Wenn ich sehen könnte, wie man das XML mit httparty korrekt übergibt, kann ich mein Problem selbst beheben.
Ich habe das Beispiel von customer.com verwendet ( https://code.intuit.com/integration/viewvc/viewvc.cgi/IntuitAnywhere-Ruby/customer.com/?Root=intuitanywhere&system=exsy1003 ) meist wie gepostet, mit ein paar irrelevante Änderungen benötigt, um es in Rails 3.1 zu arbeiten. Ich verwende die Daten ziehen und Handhabung in dem Beispiel, das wie ein ziemlich Standard-API-Wrapper mit httparty gebaut aussieht.
Ich verwende einen Pull, der dem in der Methode company_controller customers entspricht. Hier sind zwei verschiedene Möglichkeiten, die ich versucht habe, die XML zu übermitteln:
#########################################
#Example 1 - XML
e = @company.intuit_token.post("https://qbo.intuit.com/qbo1/resource/account/v2/#{@company.realm}",
{ :body =>
"<Account xmlns:ns2=\"http://www.intuit.com/sb/cdm/qbo\" xmlns=\"http://www.intuit.com/sb/cdm/v2\">
<Name>Test Account 2</Name>
<Desc>Test Account</Desc>
<Subtype>Savings</Subtype>
<AcctNum>5001</AcctNum>
<OpeningBalanceDate>2010-05-14</OpeningBalanceDate>
</Account>",
:headers => {
"Content-Type" => "application/xml"
}}
)
#########################################
#Example 2 - hash
e = @company.intuit_token.post("https://qbo.intuit.com/qbo1/resource/account/v2/#{@company.realm}",
{ :body => {
:Account => {
:Name => "Loan Account 2",
:Desc => "Loac Account 2",
:Subtype => "Savings",
:AcctNum => "5001",
:OpeningBalanceDate => "2011-04-22"
}
},
:headers => {
"Content-Type" => "application/xml"
}}
)