我试图将参数传递给一个url get请求,该请求要求其中一个参数是json对象。我正在使用Google Apps脚本。我得到一个无效参数异常。searchConditions参数需要json。我还需要在查询后传递一些附加参数,以指定要返回的字段。
文档中的示例如下所示:
https://theurl/search?searchConditions=[{ "Param1": "value", "Param2": "value"}]&fields=[ "Field1", "Field2", "etc"]
代码如下:
var url = "https:/theurl/search?searchConditions=";
var conditions = {
"Param1":"value",
"Param2":"value"
};
var fields = "&fields=[\'Field1\',\'Field2\',\'etc\']";
var options = {
"method":"Get",
"Accept": "application/json",
"Content-Type": "application/json",
"muteHttpExceptions" : true
};
options.headers = {"Authorization": "Basic xxxxxxxxxxxxx="};
var jsondata = UrlFetchApp.fetch(url + conditions + fields, options);
var data = JSON.parse(jsondata.getContentText())
更新:来自文档:
搜索事件
URI https://trackerbeyond.phaseware.com:443/pro9/api/incident/search
HTTP动词GET
请求参数有两个请求参数作为URI的一部分传入; search条件和字段。
searchConditions参数这是一个搜索条件数组。请注意,定义多个条件时,必须满足所有条件才能返回事件。
此表显示了要在每个搜索条件中设置的字段。字段名描述条件类型可能的值:Exact、BeginsWith、Contains、DateRange、IsBlank、IsNotBlank、ArchiveStatus、OpenCloseStatus。FieldName要搜索的字段的名称。要获取字段的完整列表,请使用事件架构API调用。TableName字段所在的表的名称。可能的值为z_Incident、UserIncident、z_FullTextMain、Customer、UserCustomer、Contacts、UserContacts、CustomerContacts、UserCustomerContacts、CustomerProducts、CustomerSupportPackages、IncidentParts、IncidentParties、DepartmentGroupingMembers(用于在DepartmentGrouping上搜索)。如果为空,则将使用z_Incident。注意:对于CreateDate和Description字段,使用z_FullTextMain作为TableName。包含两个字段的对象; LookupTableName和LookupFieldName。SearchValue要搜索的值。EndingSearchValue在指定DateRange的ConditionType以提供结束日期时使用。OpenActive可能的值:全部、打开或活动、关闭或存档。请注意,此参数仅在添加ConditionType为OpenCloseStatus的搜索条件时适用。
示例在本示例中,第一搜索条件用于搜索等于1的DepartmentID。第二个条件是搜索“优先级3”的优先级描述。这是使用“查找”字段搜索查找的说明而不是ID的示例。第三个条件是包括开放事件和封闭事件。默认情况下,仅返回打开的事件。[ {“ConditionType”:“Exact”,“FieldName”:“DepartmentID”,“TableName”:“",“查找”:“",“SearchValue”:“% 1”,“EndingSearchValue”:“",“OpenActive”:“OpenOrActive”},{“ConditionType”:“Exact”,“FieldName”:“PriorityID”,“TableName”:“",“查找”:{“LookupTableName”:“LU_Priority”,“LookupFieldName”:“Description”},“SearchValue”:“优先级3”,“EndingSearchValue”:“",“OpenActive”:“OpenOrActive”},{“ConditionType”:“OpenCloseStatus”,“FieldName”:“",“TableName”:“",“查找”:“",“SearchValue”:“% 1”,“EndingSearchValue”:“",“OpenActive”:“All”} ]
fields参数这是要在结果中返回的字段数组。如果此参数留空,则将返回默认字段集。
从Test this API接口成功调用:[https://trackerbeyond.phaseware.com:443/pro9/api/incident/search?searchConditions= {“ConditionType”:“Exact”,“FieldName”:“StatusID”,“SearchValue”:“12”,“OpenActive”:“OpenOrActive”} ]&fields=[“CustomerName”,“CreateDate”,“AgentFullName”,“ClosedDateTime”,“StatusID”,“IncidentID”,“Description”]
2条答案
按热度按时间ojsjcaue1#
修改要点:
contentType
。Accept
时,请将其包含在请求头中。The example in the documentation looks like this: https://theurl/search?searchConditions=[{ "Param1": "value", "Param2": "value"}]&fields=[ "Field1", "Field2", "etc"]
来看,我认为在这种情况下,URL编码查询参数的值如何?当以上几点反映到您的脚本中时,它会变成如下所示。
示例脚本:
注意:
https:/theurl/search
的URL和"Basic xxxxxxxxxxxxx="
的令牌可以用于您想要使用的API。请小心这个。参考资料:
kuhbmx9i2#
我正在为一个项目使用相同的API,我发现文档很难理解。我可以给你捎个口信吗?