使用 WWW::Mechanize 将 JSON 消息放入服务器



我正在尝试使用 HTTP PUT 向服务器发送 JSON 消息,但收到一条错误消息:

错误 PUTing https://www.example.com/records:./script.pl 行 190 处的无法处理的实体。

此消息是什么意思?它是来自Perl还是来自服务器(我假设Perl,因为它给了我一个行号(。

这是脚本正在执行的操作(在所有步骤中使用相同的机械化对象(:

  • 获取"www.example.com"(确定(
  • 将凭据发布到登录表单(正常(
  • 获取"https://www.example.com/records"(确定(
  • 解码收到的 JSON(显示正常(
  • 创建一个名为 $json_text 的新 JSON 字符串(显示为"确定"(
  • 将 $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 对象中没有看到任何问题。你有任何指示或如何使用机械化来放置这个对象吗?

httpstatuses.com这样说

服务器了解请求实体的内容类型(因此

415 不支持的媒体类型状态代码不合适(,并且请求实体的语法正确(因此400 错误请求状态代码不合适(,但无法处理包含的指令。

因此,服务器对您的 JSON 语法感到满意,但语义无效。这就是我从你提供的信息中所能说的

最新更新