json - 使用 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(显示 OK)
- 创建一个名为 $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 对象中没有发现任何问题。您是否有任何指示或关于如何使用 Mechanize 放置此对象?
解决方案
httpstatuses.com
说这个
服务器理解请求实体的内容类型(因此415 Unsupported Media Type状态码是不合适的),并且请求实体的语法是正确的(因此400 Bad Request状态码是不合适的)但无法处理包含的指示。
所以服务器对 JSON 的语法很满意,但语义无效。从你提供的信息中我只能说这些
推荐阅读
- scope - 如何修改 raku 代码“say $?PACKAGE;” 打印完全限定的包名称
- python - 将查询从 sql 类型转换为 mongodb 类型
- eclipse - 使用 rascal-maven-plugin 构建错误(未定义模块 vis::Render)
- html - 环绕按钮的锚点移动其位置?
- ionic-framework - Ionic4:在一行上有多个控件(输入和复选框)的列表项
- sql-server - OData 源错误:在服务器上部署后“无法从运行时连接管理器获取托管连接”
- python - Violin plot in plotly enclosing individual data points
- flutter - 网络抖动时同步数据
- c# - 如何将值列表返回到帖子?
- javascript - 如何在 VEGA Api 中使用 D3 树数据?