2012-02-12 14 views
0

私はRails 3.2でRailsコンソールで作業していましたが、Nokogiriを使用してXMLファイルを生成しています。ここから、私はいくつかのデータを取得し、私のアプリ内でそれを返すために外部APIに投稿する必要があります。最終的にこのコードはコントローラの機能になりますが、今はコンソールで試しています。外部APIへのXMLのポスト - Railsでの使用

Iが生成され、鋸山、私は指定されたパラメータを持つXMLファイル、と私は、次のコマンドを使用して出力を保存:ここから

File.open('results.xml', 'w') {|f| f.write(results)} 

を、私は外部のAPIには、このファイルを投稿したいです。私が使用したコマンドは、私のアプリの/ publicディレクトリにそれを保存しました。ここからは、cURLでアクセスする方法が不明です。

viewsディレクトリに置いてファイルを取得できるようにルートを設定しましたが、少なくともアクセスできます。この1つはしばらくの間、私をイライラされています

curl -X POST -v --data-ascii http://localhost:3000/search/postresults.xml http://APIPATH/example.php 

、そしてときに私を:ここで私はcURLの(Railsのサーバが一度に実行していたし、下記のAPIのパスは、例示の目的のために作られていることに注意してください)にしようとしたものです私はというエラーを取得することを試してください:

SyntaxError: (irb):5: syntax error, unexpected tCONSTANT, expecting keyword_do or '{' or '(' 
curl -X POST -v --data-ascii http://local... 
     ^
(irb):5: syntax error, unexpected tUMINUS, expecting keyword_do or '{' or '(' 
curl -X POST -v --data-ascii http://localhost:... 
      ^
(irb):5: syntax error, unexpected tLABEL, expecting keyword_do or '{' or '(' 
...l 
-X POST -v --data-ascii http://localhost:3000/search/postr... 
...        ^
(irb):5: unknown regexp options - lcalht 

が、私は標準的なトラブルシューティングのすべてを(カールがインストールされている - バージョン0.0.9は、サーバーが実行され、カールがなど私のGemfile、である)試してみたので、任意のヘルプ非常に感謝しています。ありがとう!

答えて

1

このエラーは、curlコマンドと引数をIRbに直接入力したことを示唆しています。それがRubyの仕事の宝石ではありません。さらに、RailsからHTTPリソースにPOSTしたい場合は、cURLを気にしないでください。 Railsにはこのためのツールが組み込まれています。

このAPIをたくさん使い、APIがかなりRESTyの場合は、ActiveResource(チュートリアルにはドキュメントがない場合はたくさんあります)をご覧ください。

あなたは非常にRESTy APIを使用していない、または、これは一回限りのAPIコールであれば、あなたは例えば、直接ActiveResource::Connectionのインスタンスを作成することができた場合:

conn = ActiveResource::Connection.new 'http://example.com' 

result = conn.post 'example.php', results 

する必要はおそらくありませんNokogiriの文書(results)をファイルに書き込んでください。直接ActiveResource::Connection#postに送ってください。

+0

ありがとう、それは私が探していたものです!私はRURLでcURLを使用していなかったので、私はできる限り何でもしようとしていました。私が扱っているAPIは完全な混乱であり、間違いなくRESTfulではないので、私はActiveResource :: Connectionを使用しました。 – ryan508

+0

あなたがGemsの場合は、HTTPartyをチェックしてください。また、ActiveModelでAPIコールをラップし、ActiveRecordの多くの機能を実装することもできます。 –

関連する問題