Mit Ruby, Ruby on Rails, um POST-JSON/XML-Daten mit einem web-service
Baute ich einen web service mit Spring-framework in Java und es laufen über ein tc-server auf localhost. Getestet habe ich die web-service mithilfe von curl und es funktioniert. In anderen Worten, diese curl-Befehl wird die post eine neue Transaktion auf den web-service.
curl -X POST -H 'Accept:application/json' -H 'Content-Type: application/json' http://localhost:8080/BarcodePayment/transactions/ --data '{"id":5,"amount":5.0,"paid":true}'
Nun, ich Baue eine web-app mit RoR und würde gerne etwas ähnliches machen. Wie kann ich bauen? Im Grunde, die RoR web app-client sein soll, die Beiträge an den web-service.
Suche SO und im Internet fand ich einige hilfreiche links, aber ich kann es nicht funktionieren. Zum Beispiel, aus dieser post, die er/Sie verwendet die net/http.
Habe ich versucht aber es funktioniert nicht. In mein controller, ich habe
require 'net/http'
require "uri"
def post_webservice
@transaction = Transaction.find(params[:id])
@transaction.update_attribute(:checkout_started, true);
# do a post service to localhost:8080/BarcodePayment/transactions
# use net/http
url = URI.parse('http://localhost:8080/BarcodePayment/transactions/')
response = Net::HTTP::Post.new(url_path)
request.content_type = 'application/json'
request.body = '{"id":5,"amount":5.0,"paid":true}'
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request) }
assert_equal '201 Created', response.get_fields('Status')[0]
end
Kehrt er zurück mit Fehler:
undefined local variable or method `url_path' for #<TransactionsController:0x0000010287ed28>
Den Beispiel-code, den ich verwende, ist von hier
Ich bin nicht mit net/http und ich kümmere mich nicht mit anderen tools, wie lange kann ich die gleiche Aufgabe leicht.
Vielen Dank!
InformationsquelleAutor okysabeni | 2011-09-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist genau das, was der Dolmetscher gesagt, es ist: url_path ist schwarzarbeit. was Sie wollen, ist zu nennen die #path-Methode auf den url-Variablen, die Sie deklariert in der vorherigen Zeile.
funktionieren sollte.
InformationsquelleAutor Jason Lewis