如何修复 Salesforce HTTP 发送 URL 问题

How to Fix Salesforce HTTP Send URL Issue

提问人:Carlton Foster 提问时间:11/17/2023 更新时间:11/18/2023 访问量:36

问:

当我从 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”}}&limit=3

在 Salesforce 开发人员控制台中,它失败,响应代码为 404。

在 Salesforce 中,我还需要做些什么才能使其正常工作吗?请帮帮我。

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!';
 }
REST Salesforce Apex Kobo工具箱

评论

1赞 David 11/17/2023
这回答了你的问题吗?如何修复 Salesforce HTTP 发送 URL 问题(您似乎已经过了两次。

答:

1赞 TSCAmerica.com 11/18/2023 #1

您可以尝试使用 ,salesforce 强制执行严格的 URL 编码,对查询参数进行编码EncodingUtil.urlEncode()

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);