TyphoeusあなたはRubyの構築を使用してHTTPパラメータを渡すことができます。あなたの例のURLは、JSONオブジェクトが含まれているため、APIあなたがしている可能性が高いようで、
my_params = {
api_key: "XXXXXXXXXXXXXXXXXX",
objects: [
{ field1: 'My ObjectA2' },
{ field: 'ObjectB',
color: '1',
note: '98765' }],
ids: "foo, bar"
}
get_response = Typhoeus::Request.get("http://www.example.com/objects/add.php", params: my_params)
get_response.effective_url #> http://www.example.com/objects/add.php?api_key=XXXXXXXXXXXXXXXXXX&ids=foo%2C+bar&objects=%7B%3Afield1%3D%3E%22My+ObjectA2%22%7D&objects=%7B%3Afield%3D%3E%22ObjectB%22%2C+%3Acolor%3D%3E%221%22%2C+%3Anote%3D%3E%2298765%22%7D
しかし:あなたのポスト内の1つのようなURLを生成するには、の線に沿って何かをしたいですで働いているとPOSTリクエストを探しています。
post_response = Typhoeus::Request.post("http://www.example.com/objects/add.php", params: my_params)
post_response.effective_url #> http://www.example.com/objects/add.php
post_response.request.params #> {:api_key=>"XXXXXXXXXXXXXXXXXX", :objects=>[{:field1=>"My ObjectA2"}, {:field=>"ObjectB", :color=>"1", :note=>"98765"}], :ids=>"foo, bar"}
EDIT:イベントで
APIがGET要求を期待していることは、現在のGETリクエスト経由でシリアル化されたデータを渡すための最も一般的な方法は、パラメータ名の最後に角括弧を追加することです:
http://www.example.com/objects/add.php?objects[]=something&objects[]=something%20else
ただし、Typhoeusではデフォルトで角括弧は追加されません。この決定の裏に理由を提示する議論がいくつかあります(on the Typhoeus mailing list)。幸いにも、括弧を簡単に追加することができます。
my_params = {
api_key: "XXXXXXXXXXXXXXXXXX",
:"objects[]" => [
{ field1: 'My ObjectA2' },
{ field: 'ObjectB',
color: '1',
note: '98765' }],
ids: "foo, bar"
}
get_response = Typhoeus::Request.get("http://www.example.com/objects/add.php", params: my_params)
get_response.effective_url #> http://www.example.com/objects/add.php?api_key=XXXXXXXXXXXXXXXXXX&ids=foo%2C+bar&objects%5B%5D=%7B%3Afield1%3D%3E%22My+ObjectA2%22%7D&objects%5B%5D=%7B%3Afield%3D%3E%22ObjectB%22%2C+%3Acolor%3D%3E%221%22%2C+%3Anote%3D%3E%2298765%22%7D
はい、実際のコードが役に立ちます。また、Webサーバーのログを調べて、両方のインスタンスで要求がどのように変換されたのかを正確に確認します(Chrome対Ruby)。 – theglauber
@Krule:何が無効になるのですか? –