Я пытаюсь перевести следующий сценарий 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)
Ключ получателя можно сделать как
recipients' => [
0 => { 1 => '[email protected]', 3 => 'Max' },
1 => { 1 => '[email protected]', 3 => 'Erika2' }
], #rest of code goes here
Также не забудьте конвертировать в JSON с @params.to_json
Других решений пока нет …