当我从 Postman 和 Salesforce 开发人员控制台发送此端点 URL 时,它可以在两个界面上运行: 'https://eu.kobotoolbox.org/api/v2/assets/aMeaT8CnGtoTTmooz3uKkq/data/?format=json'
但是当我发送另一个查询时,它只能在 Postman 中工作,但在 Salesforce 开发人员控制台中失败:
https://eu.kobotoolbox.org/api/v2/assets/aMeaT8CnGtoTTmooz3uKkq/data/?format=json&query={"_submission_time": {"$gt":"2023-11-16T01:02:03" }}&限制=3
从 Salesforce 开发人员控制台,它失败并显示响应代码 404。
我还需要在 Salesforce 中执行其他操作才能使其正常工作吗?请帮助我。
销售人员 APEX 代码
HttpRequest req = new HttpRequest();
String endpoint = 'https://eu.kobotoolbox.org/api/v2/assets/'+ koboproject + '/data/?format=json';
endpoint += '&query={\"_submission_time\": {\"$gt\":\"' + LastDate + '\"}}';
req.setEndpoint(endpoint);
system.debug(endpoint);
req.setMethod('GET');
req.setHeader('Authorization', 'Bearer b4c6cdf15eb891ab2a29495a02355d98925f9b2d');
req.setHeader('Accept', 'application/json');
Http http = new Http();
HttpResponse resp = http.send(req);
system.debug('RESP CODE:' + resp.getStatusCode());
if (resp.getStatusCode() == 200) {
return resp.getbody();
else {
return 'failed!';
}
您可以尝试使用
EncodingUtil.urlEncode()
对查询参数进行编码,salesforce 强制执行严格的 URL 编码
HttpRequest req = new HttpRequest();
String endpoint = 'https://eu.kobotoolbox.org/api/v2/assets/' + koboproject + '/data/?format=json';
String query = '{"_submission_time": {"$gt":"' + LastDate + '"}}';
endpoint += '&query=' + EncodingUtil.urlEncode(query, 'UTF-8');
req.setEndpoint(endpoint);
system.debug(endpoint);