Использование WWW :: Mechanize для передачи сообщения JSON на сервер - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь использовать HTTP PUT для отправки JSON-сообщения на сервер, но получаю сообщение об ошибке:

Ошибка PUTING https://www.example.com/records: Unprocessable Entity at ./script.plстрока 190.

Что означает это сообщение?Это из Perl или из сервера (я предполагаю, что Perl дает мне номер строки).

Вот что делает скрипт (используя одни и те же объекты механизации на всех этапах):

  • GET "www.example.com" (OK)
  • POST учетные данные для формы входа (OK)
  • GET "https://www.example.com/records" (OK)
  • Декодировать полученный JSON (появляется ОК)
  • Создать новую строку JSON с именем $ json_text (появляется ОК)
  • PUT $ json_text в "https://www.example.com/records" (ОШИБКА)

Я использую CentOS 7.5 со всеми установленными сегодня обновлениями.

Вот выдержки из двух последних шагов.

my $json_text;

# Some logic here to fill the string

print $json_text . "\n";
$mech->content_type( 'application/json' );
$mech->put ( $url, content => $json_text );

Оператор печативывод:

{"record":{"webspace":false,"ttl":600,"filter_value":"test.com","abc_record_type":null,"formId":12345678,"standard_value":false,"area":"test.com","address":"12.12.12.12","id":12345678,"type":"A","sub_area":""},"area_lock_state":{"area_locked":false,"email_locked":false}}

Я не вижу ничего плохого в объекте JSON.У вас есть какие-либо указатели или как использовать Mechanize, чтобы поместить этот объект?

1 Ответ

0 голосов
/ 07 июня 2018

httpstatuses.com говорит об этом

Сервер понимает тип содержимого объекта запроса (следовательно, код состояния 415 Неподдерживаемый тип носителя не подходит), и синтаксис объекта запроса правильный (таким образом, 400 Bad Request код состояния не подходит), но не смог обработать содержащиеся в нем инструкции.

Таким образом, сервердоволен синтаксисом вашего JSON, но семантика неверна.Это все, что я могу сказать по информации, которую вы дали

...