Ruby публикует HTTP-запрос с массивами, используя Net :: HTTP.post_form

Я пытаюсь перевести следующий сценарий PHP в Ruby для взаимодействия с веб-API. К сожалению, мне кажется, что я не могу правильно передать массив’ципиентов ‘, так как он неправильно интерпретируется API.
Передача других параметров работает нормально, хотя. Проблема появляется только при передаче массива получателей.

Как мне отформатировать этот массив или хэш?

Скрипт PHP:

<?php
$params=array (
'username' => 'username',
'password' => 'password',
'listId' => 1,
'recipients' =>
array (
0 =>
array (
1 => '[email protected]',
3 => 'Max',
),
1 =>
array (
1 => '[email protected]',
3 => 'Erika',
),
),
'mode' => 'update_add',
'advanced' =>
array (
'optoutSync' => 'global',
'syncFieldId' => 1,
'updateFieldId' => 3,
),
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://login.mailingwork.de/webservice/webservice/json/importrecipients');
// curl_setopt($ch, CURLOPT_URL, 'http://ruby-doc.org');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
$result = json_decode(curl_exec($ch),true);
print "errorcode:".$result['error'];
print "message:".$result['message'];
print "result:".print_r($result['result'],true);
?>

Рубиновый скрипт:

@params = {
'username' => 'username',
'password' => 'password',
'listId' => 1,
'recipients' => {
0 => { 1 => '[email protected]', 3 => 'Max' }
#1 => { 1 => '[email protected]', 3 => 'Erika2' }
},
'mode' => 'update_add',

'advanced' => {
'optoutSync' => 'global',
'syncFieldId' => 1,
'updateFieldId' => 3
}
}

Net::HTTP.post_form('https://login.mailingwork.de/webservice/webservice/json/importrecipients', @params)

1

Решение

Ключ получателя можно сделать как

recipients' => [
0 => { 1 => '[email protected]', 3 => 'Max' },
1 => { 1 => '[email protected]', 3 => 'Erika2' }
], #rest of code goes here

Также не забудьте конвертировать в JSON с @params.to_json

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]