我使用的是谷歌自定义搜索API的几年。此代码正在与谷歌NuGet包“Google.Apis.Customsearch.v1客户端库”(v1.9.0.460)。
这是我的C#代码:
public Search SearchNow(string query)
{
CustomsearchService service = new CustomsearchService(
new BaseClientService.Initializer()
{
ApiKey = Properties.Resources.Google_Key,
ApplicationName = "my-app-name"
});
CseResource.ListRequest req = service.Cse.List(query);
req.Cx = Properties.Resources.Google_CX;
req.Start = 1;
return req.Execute();
}
此代码是我的服务器上运行更多的话,一年没有任何问题。自上周开始,我开始找回此异常:
服务customsearch已抛出异常:Google.GoogleApiException:Google.Apis.Requests.RequestError无效
值[400]误差
[信息[无效值]地址[ - ]原因[无效]域[全球]
在Google.Apis.Requests.ClientServiceRequest`1.Execute(c)中:\代码\ google.com \ Google处理API-DOTNET客户端\默认\工具\ Google.Apis.Release \ BIN \调试\测试\默认\在### SearchNow(字符串查询,Int64的startResult)在###行96 CS:在Tests.Program.Main()在*** \测试线144的Src \ GoogleApis \蜜蜂\请求\ ClientServiceRequest.cs。 \的Program.cs:行67
我不知道是什么改变了\为什么这停止工作。
我由一个小测试 - 发送一个“Hello World”搜索查询到谷歌 - 这是工作的第一次。我运行这个测试agian和agian,发现这个代码在次70%的工作不错,其他时候,它失败(错误上面提到的)。
我在双核实这些PARAMS:ApiKey,应用程序名称,CX。
所以,可能是什么问题呢?
这个问题似乎是:
req.Start = 1;
从我的代码删除此解决了这个问题对我来说。
如果查询CSE JSON API时开始参数设置为一个数字大于100,则会出现此错误。结果的数量限制为最多。 100个结果。
从谷歌CSE文档:
开始:第一个结果的索引返回。每页的结果的默认数目为10,因此&开始= 11将在结果的第二页的顶部开始。注:JSON API将永远不会返回超过100个结果,即使超过100个文档符合查询条件,所以开始+ NUM的总和设置成一个大于100号将产生错误。另请注意,NUM的最大值为10。
https://developers.google.com/custom-search/v1/cse/list
解决方案:总是设置开始参数为数字<= 100。
这可能有助于太....我已经得到了这个错误:
Google.GoogleApiException:“值Google.Apis.Requests.RequestError无效的资源ID。 [400]错误[内容[值无效的资源ID]位置[ - ]原因[无效]域[全球]
而原因是设置事件ID为一个字符串长度谁短于5。 修正了类:
sEventID = value.PadLeft(5, '0');