使用WWW::Google::CustomSearch添加siteSearch参数遇totalResults缺失错误
问题更新(2024年3月1日)
下述问题存在误导性,该Bug已上报给维护者且已找到解决方案,详情见评论。
解决方案
- 这个报错是
WWW::Google::CustomSearch模块的Bug导致的:当添加siteSearch和siteSearchFilter参数后,模块解析API返回结果时逻辑出错,错误要求请求中必须传入totalResults——但实际上totalResults是API返回的结果字段,根本不需要在请求里指定。 - 临时修复方案:
- 修改模块文件:找到
/usr/local/share/perl/5.30.0/WWW/Google/CustomSearch/Request.pm,定位到第30行附近的参数校验代码,去掉强制要求totalResults的逻辑,改为仅在解析结果时验证该字段是否存在。 - 绕开模块封装:放弃使用
WWW::Google::CustomSearch,改用LWP::UserAgent直接发送HTTP请求调用Google Custom Search API,再用JSON::PP手动解析返回的JSON数据,避开模块Bug。
- 修改模块文件:找到
- 彻底解决:等待模块维护者发布修复版本,之后执行
cpan WWW::Google::CustomSearch更新模块即可。
内容的提问来源于stack exchange,提问作者Chihiro Fukazawa
相关产品推荐
相关产品推荐

